使用jQuery以输入形式单独禁用标签和数字

时间:2017-05-17 08:27:03

标签: jquery regex forms input textarea

我有一个表单,我想禁用< > # @和数字(&#39;测试123&#39;应该有效)。

我尝试的第一个条件

if ( $(this).val().match("^[^>#<@*]+$") ) { // todo }

但它每次都匹配..

我已经检查过Stackoverflow,W3Schools等,但我不知道为什么我不能应用正则表达式

谢谢

3 个答案:

答案 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+个数字
  • [^>#<@*]+ - 除>#<@*
  • 以外的1个或多个字符
  • $ - 字符串结束。

将其与RegExp#test一起使用仅返回truefalse(使用String#match,有不必要的开销与使用您不使用的值返回所有数组相关需要在这里):

if (/^(?!\d+$)[^>#<@*]+$/.test($(this).val())) {....}