我想只允许像?*=.@#$%!^":,:;<'>+-_
这样的文本中的特定特殊字符。
我试过下面的:
pattern = new RegExp(/^(?=.*?[?*=.@#$%!^":,:;<'>+-_])/);
它似乎不工作,似乎通过,即使我输入了一个特殊字符以外的上述指定。我错过了什么吗?
例如:
var sampleText: string = "TestSample&123"
上面的例子应该抛出我一个错误和失败,因为我没有使用任何特殊字符,这是指定的模式。
我想只允许像?*=.@#$%!^":,:;<'>+-_
这样的文本中的特定特殊字符。
我试过下面的:
pattern = new RegExp(/^(?=.*?[?*=.@#$%!^":,:;<'>+-_])/);
它似乎不工作,似乎通过,即使我输入了一个特殊字符以外的上述指定。我错过了什么吗?
例如:
var sampleText: string = "TestSample&123"
上面的例子应该抛出我一个错误和失败,因为我没有使用任何特殊字符,这是指定的模式。
3条答案
按热度按时间2eafrhcq1#
根据所需的字符集和the approach from this answer here about exclusive sets in Regex,您应该能够执行以下操作:
cbjzeqam2#
几件事:
var regex = /^(?=.*?[?*=.@#$%!^":,:;<'>+-_])/
代替new Regex(...)
^
将匹配锚定到字符串的开头,但您没有相应的$
来确保匹配适用于整个字符串。(?=.*?
是一个正向前查找函数,它可以对任意数量的任意字符进行运算。当你想要匹配所有字符时,你所拥有的字符组[...]
只匹配一个字符。Rahul在我打字的时候就已经回答了他的表达方式很正确
^
将匹配定位到字符串的开头,$
将匹配的结尾定位到字符串的结尾。[...]*
将匹配任意数量的字符,只要它们属于该字符集。你可以把它写成一个JS变量
ss2ws0br3#
您可以尝试使用下面的正则表达式: