我要求接受名字作为输入,并检查第一个字母是否为大写字母,并且字符串结尾后可以有1个空格.
此RegEx适用于'Bob':
^[A-Z][A-Za-z\p{L}]+[\s,.'\-]?[a-zA-Z\p{L}]*$
Run Code Online (Sandbox Code Playgroud)
然后,额外的要求是允许任何涉及允许unicode的语言/字符.
此RegEx适用于俄语名称:'Афанасий'
^[A-Z\p{L}][A-Za-z\p{L}]+[\s,.'\-]?[a-zA-Z\p{L}]*$
Run Code Online (Sandbox Code Playgroud)
...但是,虽然它允许使用unicode,但它也允许我输入带有小写字母的"bob",RegEx允许通过.
是否有任何方法允许unicode并且仍然在不是资本时标记第一个字母?(使用RegEx)
我可以进行一些代码更改来解决这个问题但是能够将它全部保存在RegEx值而不进行代码更改会很好.
可以匹配任何Unicode大写字母\p{Lu}.
使用
^\p{Lu}\p{L}+[\s,.'\-]?\p{L}*$
Run Code Online (Sandbox Code Playgroud)
要么
^\p{Lu}\p{L}+(?:[\s,.'-]\p{L}+)?$
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示1和正则表达式演示2.第二个正则表达式更精确,因为它不允许尾随空格,逗号等(在[\s,.'-]字符类中定义的内容).
请注意,[A-Za-z\p{L}]由于\p{L}已经匹配,因此没有任何意义[a-zA-Z].
图案细节:
^ - 字符串的开头\p{Lu} - 大写的Unicode字母\p{L}+ - 一个或多个Unicode字符(?:[\s,.'-]\p{L}+)? - 一个或零(可选)序列
[\s,.'-]-一个空白,,,.,'或连字符\p{L}+ - 1个或多个Unicode字母$ - 字符串结尾.| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |