[英]Telephone number category using regex pattern
我想获得用户输入的电话号码。 我有2个数字类别,黄金和普通。 当用户输入特定的电话号码格式时,系统会自动将其确定为“黄金”或“正常”。 我在编码某些模式时遇到问题。 黄金模式编号之一是这样的:AB001234其中AB是编号12,23,34,45,56,67,78和89之类的。到目前为止,我得到了什么。
public static void main(String[] args) {
Scanner userinput = new Scanner(System.in);
System.out.println("Enter Telephone Number");
String nophone = userinput.next();
String Golden = "(\\d)(\\1)002345|(\\d*)12345$";
//I want to add AB001234 pattern to the line above but I don't know how.
if (nophone.matches(Golden)) {
System.out.println("Golden");
}
else {
System.out.println("Normal");
}
}
我不确定我是否真的必须使用正则表达式。 还有一个问题,您可以看到String Golden的第一部分没有$,而第二部分则有$。 我不确定放置或删除$符号的效果。
(\\\\d)(\\\\1)
不检查该序列像12
, 23
等..相反,它会检查像两个SMAE连续的数字11
, 22
, 33
,...
要检查顺序,您必须使用Pipe(|)
- (12|23|34|45|...)
显式地进行操作
因此,您的Golden Number
格式应如下所示:-
^(?:12|23|34|45|56|67|78|89)001234$
(?:..)
-表示non-capturing group
。 在您的图案中,它不会被捕获为带编号的组。
注意:-如果sequence
的长度不同,则Regex
不是匹配它们的适当方法。
对于第二个问题, $
表示字符串的结尾。 因此,以$
结尾的模式将在字符串的末尾匹配。 另外, Caret (^)
可以匹配字符串的开头。
例如:-
abc$
与字符串"asdfabc"
匹配,但与"asdfabc"
不"sdfabcf"
。 ^abc
与字符串"abcfsdf"
匹配,但与"abcfsdf"
不"sdfabcf"
。 ^abc$
只匹配字符串"abc"
,因为它是唯一以"abc"
开头和结尾的字符串。 您可以通过以下链接来了解有关Regexp
更多信息:-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.