我正在尝试在 Go 中编写一个正则表达式来仅测试拉丁字母。
我知道 \p{Latin}
与任何拉丁脚本字符匹配,但它也与罗马数字(例如“ⅻ”)之类的东西匹配。
这使我找到 \p{L}
匹配 Unicode 字母,但它匹配任何脚本,而不仅仅是拉丁文。
到目前为止,我能得到的最好的是两个带有 &&
的正则表达式:
latinRe := regexp.MustCompile(`\p{Latin}`)
letterRe := regexp.MustCompile(`\p{L}`)
if latinRe.Matches(testString) && letterRe.Matches(testString) {...}
我很不高兴我不能使用像 regex101.com 这样的东西轻松地测试它. 有没有更好的办法?更简洁?性能?
最佳答案
您可以使用如下所示的范围来指定您希望匹配的所有字符。根据正则表达式引擎,以下其中一项应该有效:
See regex in use here :改编自this link
[A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff]
[A-Za-z\xC0-\xD6\xD8-\xf6\xf8-\xff]
另一种选择是否定 Unicode 字符类中的特定字符:
[^\P{Latin}\p{N}]
关于用于在 Go 中测试拉丁字母的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49676977/