Tho*_*ten 6 javascript regex jquery
我想允许所有字母数字字符并禁止RegEx中的所有特殊字符.但是我想允许德国的变形金刚,但因为它们也是特殊的Chars,我不能输入它们.我使用这个脚本:
if(website_media_description.match(/[^a-zA-Z0-9]/g)) {
alert('Found Special Char');
}
Run Code Online (Sandbox Code Playgroud)
因此,当äöüÄÖÜß在变量中时,我也会收到警报.我也试过这个脚本:
if(website_media_description.match(/[^a-zA-Z0-9äöüÄÖÜß]/g)) {
alert('Found Special Char');
}
Run Code Online (Sandbox Code Playgroud)
但这也行不通.有人可以告诉我我做错了什么吗?
谢谢 :)
Pau*_* S. 12
我的测试字符串来自输入字段,我写了"description test1öäüÖÄÜß"
您的问题来自于您未考虑白名单中所需的每个字符的事实.
让我们考虑一下您的测试字符串实际匹配的内容
"description test 1 öäüÖÄÜß".match(/[^a-zA-Z0-9äöüÄÖÜß]/g);
// [" ", " ", " "]
Run Code Online (Sandbox Code Playgroud)
我们可以看到,它匹配了3次,每次都是空白.因此,解决方案是为白名单添加空间(假设您不希望允许制表符/返回等).
"description test 1 öäüÖÄÜß".match(/[^a-zA-Z0-9äöüÄÖÜß ]/g);
// null
Run Code Online (Sandbox Code Playgroud)
您的测试字符串现在通过RegExp而没有匹配,这意味着它在这种情况下有效.
由于某些原因,我需要使用unicode表示形式:
[^a-zA-Z0-9\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\u00df]`
Run Code Online (Sandbox Code Playgroud)
谢谢大家 :)