用于限制_结尾的正则表达式

时间:2012-07-20 10:14:06

标签: java regex

我有一个正则表达式^[\\p{L}\\d._]*\\p{L}+[\\p{L}\\d._]*$,这适用于

  1. ABC123de(字母数字 - 无论情况如何)
  2. ABCDEfgh(仅限字母 - 无论情况如何)
  3. Abc_.123(只允许使用特殊字符_.
  4. 然而,它接受像

    这样的输入
    1. balaji_,jacob_(最后有_
    2. 2balaji,2jacob(以数字开头)
    3. 我们可以修改上面的正则表达式来限制上述两个测试用例吗?

2 个答案:

答案 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.]?$.

如果需要以下划线开头的能力,我认为我们需要有关单字符串和双字符串的允许案例的更多信息。