Multiple Regex validation for single value - alphanumeric with allowed special characters issue
下面是用于验证输入名称的regex-从字母数字开始,允许使用特殊字符。它接受"sample@@invalid",其中am仅验证允许的()[].-&ux;个字符。哪里做错了有什么帮助吗?
1 2 3 4 5 6 | if(!/[A-Za-z0-9\s\)\(\]\[\._&-]+$/.test(inputText)){ alert('Field name should be alphanumeric and allowed special characters _ . - [ ] ( ) &'); } if(!/^[A-Za-z0-9]/.test(inputText)){ alert('Field name must start with an alphanumeric'); } |
不要否定测试,而是使用反转字符类的正则表达式:
1 | if(/[^A-Za-z0-9\s)(\][._&-]/.test(inputText)){ |
。
因为它没有被锚定,所以它将匹配输入文本中允许集之外的任何字符。
1 2 3 4 5 6 7 8 9 | function validate() { var inputText = document.getElementById("inputText").value; if (/[^A-Za-z0-9\s)(\][._&-]/.test(inputText)) { alert('Field name should be alphanumeric and alllowed special characters _ . - [ ] ( ) &'); } if (/^[^A-Za-z0-9]/.test(inputText)) { alert('Field name must start with an alphanumeric'); } } |
演示
您的regex与给定的输入字符串的"无效"部分匹配,因为此后缀基于您的给定regex是完全有效的。也许您应该在regex中添加一个起始的
1 2 3 4 5 6 7 | if(!/^[A-Za-z0-9\s\)\(\]\[\._&-]+$/.test(inputText)){ alert('Field name should be alphanumeric and allowed special characters _ . - [ ] ( ) &'); } if(!/^[A-Za-z0-9]/.test(inputText)){ alert('Field name must start with an alphanumeric'); } |
我当然更喜欢Sabuj Hassan的答案,因为它将两张支票合并为一张。
这是从字母数字开始,然后是字母数字+特殊字符。
1 | /^[A-Za-z0-9][A-Za-z0-9\(\)\[\]._&-]+$/ |
这一个以字母数字开头,然后只有特殊字符。
1 | /^[A-Za-z0-9][\(\)\[\]._&-]+$/ |
号
注意,我在regex的末尾添加了