这是我的代码,用于确定单词是否包含任何非字母数字字符:
String term = "Hello-World";
boolean found = false;
Pattern p = Pattern.Compile("\\W*");
Matcher m = p.Matcher(term);
if(matcher.find())
found = true;
Run Code Online (Sandbox Code Playgroud)
我想知道正则表达式是否错误.我知道"\W"
会匹配任何非单词字符.对我失踪的任何想法?
现在是 2016 年或更晚,您应该考虑来自其他字母的国际字符串,而不仅仅是拉丁字母。[^a-zA-Z]
在这种情况下,经常引用的将不匹配。Java 现在有更好的方法:
[^\\p{IsAlphabetic}^\\p{IsDigit}]
Run Code Online (Sandbox Code Playgroud)
请参阅参考资料(“Unicode 脚本、块、类别和二进制属性的类”部分)。还有这个答案我觉得很有帮助。