我正在开发一个欧洲客户的应用程序,他们有自己的本地字符集。
现在我需要一个正则表达式,允许使用外文字符,比如eéèêë
等,但我不确定该如何做。
有什么建议吗?
我正在开发一个欧洲客户的应用程序,他们有自己的本地字符集。
现在我需要一个正则表达式,允许使用外文字符,比如eéèêë
等,但我不确定该如何做。
有什么建议吗?
如果您想在几乎任何正则表达式引擎中匹配带有重音或变音符号的拉丁字符,请尝试:
[A-Za-zŽžÀ-ÿ]
它匹配以下"可打印和扩展ASCII字符"集合中的任何字符:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ŽžÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
匹配 {char} (ASCII 字符索引,区分大小写):
字符 | 索引(起始) | 索引(结束) |
---|---|---|
[A-Z] | 65 | 90 |
[a-z] | 97 | 122 |
Ž | 142 | --- |
ž | 158 | --- |
[À-ÿ] | 192 | 255 |
在 https://regex101.com/r/Xbbtm1/1 进行测试。
\p{L}目前还不跨浏览器。如果您经常使用它,从这里转换会给您带来极度膨胀的代码。
以下是一种简单的方法来包含非ASCII字母,而不需要添加海量的JavaScript或插件。将正则表达式中的a-zA-Z0-9或\w替换为此内容,并且不要使用u标志:
\u00BF-\u1FFF\u2C00-\uD7FF\w
在我所有的JavaScript正则表达式中插入此内容以替换a-zA-Z0-9或\w,似乎可以完成工作。我的上下文是在HTML和CSS中识别UTF-8,并且必须跨浏览器。
我无法相信它如此简单,所以正在等待被证明错误,在Firefox中搜索了一天后仍然无法使其正常工作...
我只使用日语平假名进行了测试,带有法国口音。
[A-Za-z\u00C0-\u1FFF\u2800-\uFFFD]
。它包含了所有Unicode字母,但还包括数千个不是字母的字符。如果要精确表示BMP中的字母类将非常庞大且效率低下。 - yas[e\xE8\xE9\xEA\xEB]
将匹配任何一个 eéèêë
\p{L}
仍然是更好的选择。) - dlras2
/^[a-zA-Z ]+$/\p{L}
因为这种方式不起作用。 - Rachel\p{L}
,因为这只会匹配字母(不包括空格、其他分隔符或数字)。确切的样式要求无法确定,除非知道你需要满足的全部需求。 - Fredrik Mörk