我是Java用户,但我是正则表达式的新手。
我只想要一个微小的表达式,给定一个单词(我们假设字符串只有一个单词),用布尔值回答,告诉单词是否有效。
一个例子......我想要抓住所有在字典中都是合理的单词...所以,我只想要带有字母的字符来自AZ AZ,一个连字符(例如:中间人) )和撇号(就像我或蒂芙尼的那样)。
有效的话:
"food"
"RocKet"
"man-in-the-middle"
"kahsdkjhsakdhakjsd"
"JESUS"
等无效字词:
"gipsy76"
"www.google.com"
"me@gmail.com"
"745474"
"+-x/"
等我使用此代码,但它没有给出正确的答案:
Pattern p = Pattern.compile("[A-Za-z&-&']");
Matcher m = p.matcher(s);
System.out.println(m.matches());
我的正则表达式出了什么问题?
答案 0 :(得分:4)
+
以说出“其中一个或多个字符”:\
(或将其放在最后一个位置)转义连字符。&
个字符:以下是代码:
Pattern p = Pattern.compile("[A-Za-z'-]+");
Matcher m = p.matcher(s);
System.out.println(m.matches());
完成测试:
String[] ok = {"food","RocKet","man-in-the-middle","kahsdkjhsakdhakjsd","JESUS"};
String[] notOk = {"gipsy76", "www.google.com", "me@gmail.com", "745474","+-x/" };
Pattern p = Pattern.compile("[A-Za-z'-]+");
for (String shouldMatch : ok)
if (!p.matcher(shouldMatch).matches())
System.out.println("Error on: " + shouldMatch);
for (String shouldNotMatch : notOk)
if (p.matcher(shouldNotMatch).matches())
System.out.println("Error on: " + shouldNotMatch);
(不产生输出。)
答案 1 :(得分:1)
这应该有效:
"[A-Za-z'-]+"
答案 2 :(得分:0)
但" -word"和"字 - "无效。所以你可以使用这种模式:
WORD_EXP = "^[A-Za-z]+(-[A-Za-z]+)*$"
答案 3 :(得分:0)
正则表达式 - / ^([a-zA-Z] *(' | - )?[a-zA-Z] +)* /
如果你不想要连续的"'"你可以使用上面的正则表达式或" - "。 它会为您准确匹配您的文本。 它接受 人在这方面的中间人 ASD' asdasd' ASD
拒绝以下字符串 男人 - 在 - midle asdasd'' ASD
答案 4 :(得分:-1)
嗨Aloob请用这个查一下,有点冗长,可能会有更短的版本,还是......
[A-z]*||[[A-z]*[-]*]*||[[A-z]*[-]*[']*]*