现有正则表达式中的其他一些正则表达式标准

时间:2019-07-09 18:42:45

标签: java regex

我想添加到下面的正则表达式中,该正则表达式也符合以下条件-

^[\p{L}\d'][ \p{L}\d'-]*[\p{L}\d'-']$
  1. 只能以字母(A-Z或a-z)开头。
  2. 也只能接受单个字母。
  3. 在字符串或字符串结尾之间接受连字符(-),空格,点(.)。 (没有其他特殊字符)
  4. 接受介于字符串之间和末尾的数字。

请也要达到现有标准,此正则表达式在做什么。

例如

预期-

t, T, test, test123, te12st, te-st, te.st, te st, éééééé, ṪỲɎɆḂɃɀȿȸȺȔȐȳɊÉâÇë, Επίθετο

不期望-

12test, 1, .test, -test, , tes*t (none of the special character except hyphen, dot & space),  

2 个答案:

答案 0 :(得分:0)

^[A-Za-z]+[\p{L}\d-.\s]*$

这是一个可能的解决方案,但是这些测试标准与您的第一个要求冲突:éééééé,ṪỲɎɆḂɃɀȿȸȺȔȐȳɊÉâÇë,Επίθετο。 1)接受一个或多个A-Za-z,然后2)零个或多个字母,数字,连字符,空格和句点的组合。

如果您希望它也接受这三个测试标准,那么这是一种可能的解决方案:

^[\p{L}]+[\p{L}\d-.\s]*$

答案 1 :(得分:0)

要匹配期望值,而不是不期望值(包括单个字母),可以从字符串开头匹配\pL。然后重复0+次[\d\pL .-]中列出的任何一个,然后声明字符串的结尾。

请注意,并非您期望的全部都以a-zA-Z开头。

^\pL[\d\pL .-]*$

在Java中

String regex = "^\\pL[\\d\\pL .-]*$";

Regex demo | Java demo