我正在使用java,我必须使用正则表达式检查输入字符串。 我是正则表达的新手。
我正在输入表单中的输入。
以下是我需要记下正则表达式的示例数据。
LastName FirstName
Ab.CD BC
Ab-CFgD Ab.CD
F'b-CF gD BC
F'b-CF gD. F.b-CF gD'D
Fb-CF gD'D BC
F.b-CF gD'D F'b-CF gD
表示在LastName和First name之间包含dot(.), Hiphen(-), And single quotes(')
。
我只为“姓氏,名字”写下了regexx。
"[a-zA-Z]+, *[a-zA-Z]+"
正则表达式用于查找上面提到的所有字符串
答案 0 :(得分:0)
试试这个: -
"([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"
说明: -
( // Capture group 1
[ // Character class
a-zA-Z // alphabets
. // a Dot
' // A quote
- // A hyphen (Should be at the end, in the middle it means a range
]+ // Character class close. One or more repetition
) // Group 1 closes
似乎你的姓氏或名字之间也有一个空格,如你的例子所示。请检查一下是否正确。
您在上述正则表达式中有two capture groups
。这两个群组都会抓取firstname
和lastname
。你可以打印它们。
示例运行一些字符串: -
String str1 = "Ab.CD, Ab.CD";
String str2 = "F'b-CFgD., F'b-CFgD.";
String str3 = "F'b-CF gD, F'b-CF gD";
System.out.println(str1.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)")); // true
System.out.println(str2.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)")); // true
System.out.println(str3.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)")); //false
如您所见,最后一个打印为false,因为第3个字符串之间有空格。如果您还想匹配空格,请将其添加到角色类中。
要确保firstname
和lastname
仅以字母开头,您可以像这样修改正则表达式: -
"([a-zA-Z][a-zA-Z.'-]+),[ ]*([a-zA-Z][a-zA-Z.'-]+)"
在两种模式的开头添加[a-zA-Z]
,以确保第一个字符来自给定的字母范围。
答案 1 :(得分:0)