我有一个正则表达式^[\\p{L}\\d._]*\\p{L}+[\\p{L}\\d._]*$ ,这适用于
ABC123de(字母数字 - 不论大小写)ABCDEfgh(仅字母 - 无论大小写)Abc_.123(只允许使用特殊字符_和.)
但是,它正在接受像这样的输入
balaji_,jacob_(_最后有)2balaji,2jacob(以数字开头)
我们可以修改上面的正则表达式来限制上面的两个测试用例吗?
当然,像这样在开头和结尾添加适当的限制:
^\p{L}[\p{L}\d._]*\p{L}+[\p{L}\d._]*[\p{L}\d.]$
第一点:
^[\p{L}\d._]*\p{L}+[\p{L}\d._]*$
has*允许零个或多个,首先修复问题 #2 将其更改为+:一个或多个:
^[\p{L}\d._]+\p{L}+[\p{L}\d._]*$.
为了防止最后出现下划线,需要另一个不包括的子句_:
^[\p{L}\d._]+\p{L}+[\p{L}\d._]*[\p{L}\d.]?$.
但这仍然允许 a_单独(仅从第一部分匹配)。如果您不想要唯一的下划线,只需从第一个子句中删除:
^[\p{L}\d.]+\p{L}+[\p{L}\d._]*[\p{L}\d.]?$.
如果需要以下划线开头的能力,我认为我们需要有关单字符串和双字符串的允许大小写的更多信息。