2017-05-17 27 views
-1

我有一个表单,我想禁用< > # @和单独的数字('test 123'应该工作)。使用jQuery在输入表单中单独禁用标签和数字

对于第一个条件我试图

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

但每次匹配..

我已经检查#2,W3Schools的等,但我不知道为什么我不能申请正则表达式

谢谢

+1

号码如'5'?这是否意味着什么? –

+0

我的意思是如果该值等于只是一个数字(如int),它不应该工作。 –

+0

尝试'.match(/ ^(?!\ d + $)[^>#<@ *] + $ /)'。尽管如此,我宁愿将它与“RegExp#test”方法一起使用。 '/ ^(?!\ d + $)[^>#<@ *] + $ /测试(多个)'。 –

回答

1

您需要负回顾后添加到您使用的模式,并定义像

/^(?!\d+$)[^>#<@*]+$/ 

正则表达式见regex demo(注意\n是因为演示输入字符串包含换行符)。

详细

  • ^ - 串
  • 开始
  • (?!\d+$) - 输入字符串不能只包含1+位数
  • [^>#<@*]+ - 1个或多个字符比>#<其他,@*
  • $ - 字符串结尾。

用它与RegExp#test只返回truefalse(与String#match,没有涉及与值返回所有的数组,你不需要在这里不必要的开销):

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

作品也谢谢你! ,我给你的绿色检查,因为你比其他答案更好地解释我 –

+0

@XavierC .:实际上,它是根据您的原始要求运作的答案。如果第二行有非数字,而第一行没有数字,则Gawil的答案将会失败,而Bhushan的解决方案只是匹配任何字符串,在字符串内部任何位置包含1个字母数字或空白字符*。如果您否定测试检查,则会匹配不包含这些字符的字符串。我相信我的答案是唯一正确的答案。 –

+0

是的,我通过查看您的RegEx,A +老兄了解了它! –

1

如果我理解正确,你想匹配字符串至少有一个字符不是一个数字,没有以下字符RS:<, >, # and @
你可以做到这一点与此正则表达式:
(?=.*\D)[^<>#@]*

1

尝试以下:使用RegExp对象可以测试模式如下图所示

var regEx = new RegExp("[0-9a-zA-Z\\s]+"); 
if (regEx.test($(this).val())) 
+0

这匹配号码 – Gawil