我想写一个正则表达式,它将与名称的几种变体/常用用法之一匹配。
我需要接受用户输入,然后验证输入是否与列出的变体之一匹配。如果存在匹配项,我需要输出存在匹配项,否则,我应该输出输入不是匹配项。
这是我到目前为止的内容:
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 ***");
}
}
}
我希望获得一些帮助来构建模式或获得建议的替代方法,以完成相同的任务。
谢谢。
最佳答案
此模式将匹配任何字符串Daimon
,Daimo
,Dai
,daimon
,daimo
,DAIMON
:
Pattern pattern = Pattern.compile("^([dD]aimon?|DAIMON|Dai)$");
或稍大一些的模式看起来像这样
Pattern pattern = Pattern.compile("^dai(mon?)?$",Pattern.CASE_INSENSITIVE);