我今天遇到了这个问题:
这个正则表达式仅匹配英文:
如果我需要支持世界上任何语言,我应该写什么正则表达式呢?
这个正则表达式仅匹配英文:
[a-zA-Z0-9]
。如果我需要支持世界上任何语言,我应该写什么正则表达式呢?
[a-zA-Z0-9]
。\w
类匹配“单词字符”(字母、数字和下划线)。\d
(数字)和 \w
使用ASCII码,但对于 \s
(空白字符)使用Unicode。XML 则相反。字母/字符: \p{L}
数字: \p{N}
因此,为了匹配所有语言的字母数字,可以使用:[\p{L}\p{N}]+
我正在寻找一种在JS中用空格替换所有语言的非字母数字字符的方法,最终使用了以下方式:
const regexForNonAlphaNum = new RegExp(/[^\p{L}\p{N}]+/ug);
someText.replace(regexForNonAlphaNum, " ");
由于这是JS,我们需要在正则表达式末尾添加“u”以使其支持Unicode,并且“g”代表全局匹配,因为我想匹配所有实例而不仅仅是单个实例。
参考资料:
支持大多数编程语言的正则表达式
^[A-zÀ-Ÿ\d-]*$
"\\p{LD}+" ==> LD means any letter or digit.
text.replaceAll("\\P{LD}+", "");//Note P is capital.
[[:alpha:]]
可能更为标准。 - R.. GitHub STOP HELPING ICE