我正在写一个正则表达式来匹配包含超过2个单词的字符串,并且应该至少有1个数字可用或1个单词没有数字。
即如果我有以下字符串:
1. "Sample data with no digit" (no digit)
2. "1004" (less than 2 words)
3. "1004 1008" (no alphabets)
4. "1004 data" (exactly 2 words)
5. "5ample Data with digits" (note that S-> 5)
6. "Sample Data with 1004"
正则表达式应匹配第5,第6个字符串(不提取其他字符串的原因与数据一起提到)
我试过以下但是以下内容总是返回所有字符串:
[\d[0-9]|[ABEGFIHKJLOQPSRUTXZbgfihkjloqpsuz!]]+[\w\s]* (returns all strings)
请注意我使用的是JAVA。
请提前帮助和谢谢。
答案 0 :(得分:1)
您可以将此正则表达式与2个前瞻断言一起使用:
^(?=.*\b[a-zA-Z]*\d+[a-zA-Z]*)(?=.*\b[a-zA-Z]+\b)(?:\w+\h+){2,}\w+
RegEx分手:
(?=.*\b[a-zA-Z]*\d+[a-zA-Z]*)
:预见确保我们有一个数字(?=.*\b[a-zA-Z]+\b)
:预示断言我们有一个没有数字的单词(?:\w+\h+){2,}\w+
:确保输入中至少有3个字