Check if string contains anything other than
我有一个输入字段要验证和限制输入的字符。
如果字段包含以下内容以外的任何内容,如何显示错误?
1 2 3 4 | a-z A-Z 0 to 9 !$%&*:;#~@ |
我试过用
1 | If (/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!$%&*:;#~@])[\da-zA-Z!$%&*:;#~@]$/.test(userin) === false) then alert 'xxxx'; |
号
但这似乎行不通。有什么想法吗?
谢谢
引用我的注释,您可以使用以下任意一种方法捕获不在您提供的列表中的任何字符。
1
2
3
4 a-z
A-Z
0 to 9
!$%&*:;#~@
号
1 | [^a-zA-Z0-9!$%&*:;#~@] |
单击此处查看它的实际操作。我做了一些键盘粉碎,如你所见,它抓住了列表中没有找到的字符。
如果您想向用户展示上面用
根据在regex101上生成的代码(在提供的外部链接中),可以使用以下代码对其进行测试。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | const regex = /([^a-zA-Z0-9!$%&*:;#~@])/g; const str = `afdskljfalsfhaljsf jdsalfhajslfjdsf haskjlfjdskfa sdfl;dasj fas kjdfs2345tg!@*%(&)&^%\$@#@!!\$%^&%(\$%\$##@\$@>?"{P}P@#!é45049sgfg~~~\`\`\`j;fad;fadsfafds {": fd :"L'KM"JNH¨MJ'KJ¨HN'GFDMG`; let m; while ((m = regex.exec(str)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === regex.lastIndex) { regex.lastIndex++; } // The result can be accessed through the `m`-variable. m.forEach((match, groupIndex) => { console.log(`Found match, group ${groupIndex}: ${match}`); }); } |
号
在上面的代码中,在最后一个
Use
regex.test() if all you want is a boolean result:
1
2
3
4
5 /^([a-z0-9]{5,})$/.test('abc1'); // false
/^([a-z0-9]{5,})$/.test('abc12'); // true
/^([a-z0-9]{5,})$/.test('abc123'); // true...and you could remove the
() from your regexp since you've no need
for a capture.
号