我有一个表单,我想禁用< > # @
和单独的数字('test 123'应该工作)。使用jQuery在输入表单中单独禁用标签和数字
对于第一个条件我试图
if ($(this).val().match("^[^>#<@*]+$")) { // todo }
但每次匹配..
我已经检查#2,W3Schools的等,但我不知道为什么我不能申请正则表达式
谢谢
我有一个表单,我想禁用< > # @
和单独的数字('test 123'应该工作)。使用jQuery在输入表单中单独禁用标签和数字
对于第一个条件我试图
if ($(this).val().match("^[^>#<@*]+$")) { // todo }
但每次匹配..
我已经检查#2,W3Schools的等,但我不知道为什么我不能申请正则表达式
谢谢
您需要负回顾后添加到您使用的模式,并定义像
/^(?!\d+$)[^>#<@*]+$/
正则表达式见regex demo(注意\n
是因为演示输入字符串包含换行符)。
详细:
^
- 串(?!\d+$)
- 输入字符串不能只包含1+位数[^>#<@*]+
- 1个或多个字符比>
,#
,<
其他,@
,*
$
- 字符串结尾。用它与RegExp#test
只返回true
或false
(与String#match
,没有涉及与值返回所有的数组,你不需要在这里不必要的开销):
if (/^(?!\d+$)[^>#<@*]+$/.test($(this).val())) {....}
作品也谢谢你! ,我给你的绿色检查,因为你比其他答案更好地解释我 –
@XavierC .:实际上,它是根据您的原始要求运作的答案。如果第二行有非数字,而第一行没有数字,则Gawil的答案将会失败,而Bhushan的解决方案只是匹配任何字符串,在字符串内部任何位置包含1个字母数字或空白字符*。如果您否定测试检查,则会匹配不包含这些字符的字符串。我相信我的答案是唯一正确的答案。 –
是的,我通过查看您的RegEx,A +老兄了解了它! –
如果我理解正确,你想匹配字符串至少有一个字符不是一个数字,没有以下字符RS:<, >, # and @
你可以做到这一点与此正则表达式:
(?=.*\D)[^<>#@]*
尝试以下:使用RegExp对象可以测试模式如下图所示
var regEx = new RegExp("[0-9a-zA-Z\\s]+");
if (regEx.test($(this).val()))
这匹配号码 – Gawil
号码如'5'?这是否意味着什么? –
我的意思是如果该值等于只是一个数字(如int),它不应该工作。 –
尝试'.match(/ ^(?!\ d + $)[^>#<@ *] + $ /)'。尽管如此,我宁愿将它与“RegExp#test”方法一起使用。 '/ ^(?!\ d + $)[^>#<@ *] + $ /测试(多个)'。 –