JS RegExp如何不允许特殊字符和数字?

时间:2018-10-18 05:40:53

标签: javascript regex

我有一个很好的RegExp,它根本不允许数字:

/^[\D]*$/

现在我只需要它也不能防止这样的特殊字符:

!@#$%^&*()_+-/."' <> \ |±§`

等(如果还有更多我不知道的特殊字符,我也很乐意将其阻止)。

这确实有效-但可能无法涵盖所有​​情况:

/^[^\d^!^@^#^$^%^&^*^(^)^[^\]^{^}^;^:^|^,^<^>^.^?^/^\\^~^`^±^§]*$/

1 个答案:

答案 0 :(得分:2)

您需要使用支持正则表达式且具有完整Unicode(即ES 6+)的Javascript版本。然后您可以使用这样的正则表达式:

/^\p{L}*$/gu

这仅允许L Unicode字符类中的字符,代表“字母”。

var regex = /^\p{L}*$/gu;
console.log("abc".match(regex));
console.log("αβγ".match(regex));
console.log("абв".match(regex));
console.log("ひらがな".match(regex));
console.log("中文".match(regex));
console.log("!@#$".match(regex));
console.log("1234abc".match(regex));