否定随机正则表达式
Negate random regular expression
是否有一种方法来否定任何正则表达式?我使用正则表达式来验证表单上的输入。我现在尝试创建一个按钮来对输入进行消毒。是否有一种方法可以让我使用用于验证的正则表达式,也用于剥离无效字符?
我使用这个正则表达式来验证非法字符
<input data-val-regex-pattern="[^|<>:'?''*'[']'=%'$'+,;~&'{'}]*" type="text" />
当点击旁边的按钮时,我调用这个函数:
$('#button').click(function () {
var inputElement = $(this).prev();
var regex = new RegExp(inputElement.attr('data-val-regex-pattern'), 'g');
var value = inputElement.val();
inputElement.val(value.replace(regex, ''));
});
目前javascript正在做什么我想要完成的完全相反。我需要找到一种方法来"反转"正则表达式。
编辑:我试图在javascript函数中反转正则表达式。data-val-regex-pattern
-属性中的正则表达式正在执行验证工作。
要找到无效字符,只需从正则表达式中取出^
。
data-val-regex-pattern="[|<>:'?''*'[']'=%'$'+,;~&'{'}]*"
这将返回不需要的字符,以便您可以替换它们。
另外,如果您想去掉很多非单词字符,您可以尝试使用更简单的正则表达式。如果只需要单词字符和空格,可以使用如下命令:
data-val-regex-pattern="['W'S]*"
您的权限如下:
[^|<>:'?''*'[']'=%'$'+,;~&'{'}]*
这意味着,它匹配任何非无效字符多次。
然后将这个替换为empty,这样就只留下不好的字符。
试试这个,不要否定(移动到其他地方):
[|^<>:'?''*'[']'=%'$'+,;~&'{'}]*
下面的答案是对正则表达式求反的一般问题的回答。在您的特定情况下,您只需要否定一个字符组,或者更准确地说,删除一个字符组的否定-这在其他答案中有详细说明。
正则语言——那些完全由匹配的正则组成的字符串——实际上在否定下关闭:是另一个正则,它完全匹配原始正则不匹配的字符串。然而,构造它并不容易,这也许解释了为什么RE实现通常不提供反运算符。
然而,Javascript的regexp语言有扩展,使其比常规语言更具表现力;特别地,有一个负向展望的构造。
如果R1
是regexp则
^(?!.*(R1))
精确匹配不包含R1匹配的字符串。
和
^(?!R1$)
精确匹配不匹配R1的字符串。
Ie。否定。
对于重写任何不匹配给定regexp的子字符串,以上是不够的。比如
((?!R1).)*
将捕获任何不包含与R1
匹配的子字符串的子字符串。-但考虑到边缘情况,这并不完全符合我们的要求。例如,((?!ab).)*
匹配"ab"中的"b",因为"ab"不是"b"的子字符串。
可以作弊,使你的regexp像;
(.*)(R1|$)
并重写为T1$2
其中T1
是要重写为的目标字符串。
这将重写字符串中不匹配R1
到T1
的部分。但是我会非常小心任何边缘情况。因此,从头编写regexp可能比尝试通用方法更好。
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 正则表达式中的随机字符替换
- 否定随机正则表达式
- 我如何搜索正则表达式javascript随机