正则表达式禁止所有特殊字符但允许jQuery中的德语变音符号?

时间:2013-06-17 17:42:01

标签: javascript jquery regex

我想允许所有字母数字字符并禁止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');        

}

但这也行不通。有人可以告诉我我做错了吗?

谢谢:)

2 个答案:

答案 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]`

感谢大家:)