现在我的正则表达式是这样的:
[a-zA-Z0-9]但它不包含我想要的重音字符。我也想 - ',包括在内。
答案 0 :(得分:11)
重音字符:DIY字符范围减法
如果你的正则表达式引擎允许它(很多人会),这将有效:
(?i)^(?:(?![×Þß÷þø])[-'0-9a-zÀ-ÿ])+$
请参阅the demo(您可以添加要测试的字符)。
<强>解释强>
(?i)
设置不区分大小写的模式^
锚点断言我们位于字符串的开头(?:(?![×Þß÷þø])[-'0-9a-zÀ-ÿ])
匹配一个字符...... (?![×Þß÷þø])
断言char不是括号中的一个[-'0-9a-zÀ-ÿ]
允许在宽重音范围内使用短划线,撇号,数字,字母和字符,我们需要从中减去+
匹配一次或多次$
锚点断言我们位于字符串的末尾<强>参考强>
答案 1 :(得分:2)
@NightCoder 的回答很完美:
\p{L}\p{M}
并且没有脆弱的白名单。请注意,要使其在 javascript 中工作,您需要添加 unicode u
标志。在 javascript 中有一个工作示例很有用...
[..."Crêpes are øh-so déclassée".matchAll( /[-'’\p{L}\p{M}\p{N}]+/giu )]
将返回类似...
[
{
"0": "Crêpes",
"index": 0
},
{
"0": "are",
"index": 7
},
{
"0": "øh-so",
"index": 11
},
{
"0": "déclassée",
"index": 17
}
]
这是在操场上... https://regex101.com/r/ifgH4H/1/
还有一些关于那些正则表达式 unicode 类别的细节...https://javascript.info/regexp-unicode
答案 2 :(得分:0)
使用POSIX字符类(http://www.regular-expressions.info/posixbrackets.html):
[-'[:alpha:]0-9]
或[-'[:alnum:]]
[:alpha:]
字符类匹配任何被认为是&#34;字母字符&#34;在你的语言环境中。
答案 3 :(得分:0)
没有排除规则的版本:
^[-'a-zA-ZÀ-ÖØ-öø-ÿ]+$
<强>解释强>
^
锚点断言我们位于字符串的开头[...]
允许短划线,撇号,
数字,字母和字符在宽重音范围内,+
匹配一次或多次$
锚点断言我们位于字符串的末尾<强>参考强>
答案 4 :(得分:0)
您刚刚输入:
\p(L}\p{M}
在您的表情中。 Unicode中的将匹配: