我有一个表单,我想禁用< > # @
和数字(&#39;测试123&#39;应该有效)。
我尝试的第一个条件
if ( $(this).val().match("^[^>#<@*]+$") ) { // todo }
但它每次都匹配..
我已经检查过Stackoverflow,W3Schools等,但我不知道为什么我不能应用正则表达式
谢谢
答案 0 :(得分:1)
如果我理解正确,您希望将字符串与至少一个不是数字的字符匹配且不包含以下字符:<, >, # and @
你可以用这个正则表达式做到这一点:
(?=.*\D)[^<>#@]*
答案 1 :(得分:1)
尝试以下:使用RegExp对象,您可以测试模式,如下所示
var regEx = new RegExp("[0-9a-zA-Z\\s]+");
if ( regEx.test($(this).val()) )
答案 2 :(得分:1)
您需要为您使用的模式添加负面的lookbehind并定义正则表达式
/^(?!\d+$)[^>#<@*]+$/
请参阅regex demo(注释\n
已添加,因为演示输入字符串包含换行符。)
详细:
^
- 字符串开头(?!\d+$)
- 输入字符串不能只包含1+个数字[^>#<@*]+
- 除>
,#
,<
,@
,*
$
- 字符串结束。将其与RegExp#test
一起使用仅返回true
或false
(使用String#match
,有不必要的开销与使用您不使用的值返回所有数组相关需要在这里):
if (/^(?!\d+$)[^>#<@*]+$/.test($(this).val())) {....}