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