我是正则表达式的新手,所以我希望在这方面有一个容易出现的问题。基本上我试图检查用户输入是否匹配包含字母或数字的单词或短语
([a-zA-Z0-9]+)|(([a-zA-Z0-9]+\s+[a-zA-Z0-9]+)+)\s*
希望它不是太乱,所有的帮助都非常感激。
它适用于像“男人是男人”这样的短语,而不是“男人是狗”这样的短语让我感到困惑。
答案 0 :(得分:2)
它应该适用于您的两个短语并且两次捕获the
,因为您的正则表达式不会评估您的第二次轮换,因为第一个([a-zA-Z0-9]+
)每次都会匹配(请参阅{ {3}})。
如果您要做的只是匹配a word or phrase containing letters or numbers
我会使用
(?:[a-zA-Z0-9]+\s?)+
我也不会使用\w
代替[a-zA-Z0-9]
,因为\w
在_
匹配许多正则表达式引擎。
说明:
(?: #start of non-capturing group
[a-zA-Z0-9] #character class matching one of a-z, A-Z and 0-9
+ #between one and unlimited times
\s? #optional whitespace (includes tabs newlines)
) #end of non-capturing group
答案 1 :(得分:0)
如果您只想检查字母或数字,可以直接执行:
String regex = "([a-z]|[A-Z]|[0-9])+";