我想编写一个正则表达式,它将匹配名称的几个变体/常见用法之一。初学者正则表达式Java
我需要接受用户输入,&然后验证输入是否与列出的变体之一匹配。如果匹配,我需要输出匹配,如果不匹配,我应该输出输入不匹配。
这是我到目前为止有:
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegExMyName {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Name: Daimon");
System.out.println("Common Usages: Daimon, Daimo, Dai, daimon, daimo, DAIMON");
System.out.println("Enter any of the variations listed only: ");
//*** HELP REQUIRED WITH PATTERN BELOW - pat
Pattern pat = Pattern.compile();
Matcher match = pat.matcher(scan.nextLine());
//***HELP REQUIRED WITH FIND BELOW
if (match.find()){
System.out.println("*** You entered a valid name ***");
}else{
System.out.println("*** You entered an invalid name ***");
}
}
}
我想一些帮助构成模式或者接受,将完成同样的事情替代方法的建议。
谢谢。
为什么不能我的名字是 “(╯□°°)╯”?你是想把它抽象成通用名称验证器,还是只验证一个特定名称的变体? – tenub
阅读[教程](http://docs.oracle.com/javase/tutorial/essential/regex/)。顺便说一句,只要字符串的任何部分与模式匹配,'match.find()'就会找到一个匹配。如果你想确保整个字符串在左边或右边没有多余的东西,使用'match.matches()'。 – ajb
我会在这里使用'Set'来检查允许列表中的输入 – 2014-01-10 21:53:52