【发布时间】:2014-01-10 21:50:15
【问题描述】:
我想编写一个正则表达式,以匹配名称的几种变体/常见用法之一。
我需要接受用户输入,然后验证输入是否与列出的变体之一匹配。如果匹配,我需要输出匹配,如果没有,我应该输出输入不匹配。
这是我目前所拥有的:
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 ***");
}
}
}
我需要一些帮助来构建模式或接收有关可以完成相同任务的替代方法的建议。
谢谢。
【问题讨论】:
-
为什么我的名字不能是“(╯°□°)╯”?您是想将其抽象为通用名称验证器还是仅验证一个特定名称的变体?
-
阅读此tutorial。顺便说一句,只要字符串的任何部分与模式匹配,
match.find()就会找到匹配项。如果您想确保整个字符串与左侧或右侧没有多余的内容匹配,请使用match.matches()。 -
我会在这里使用
Set来检查允许列表中的输入 -
感谢您的回复!我正在尝试验证一个名称,但如果可以提供有关最佳实践的信息,以便将其抽象为通用名称验证器,肯定会很有趣?
-
哦,好吧,我不确定这一切是如何运作的。我会根据需要审查帖子和更新。感谢您提供信息。!
标签: java regex expression