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