Java正则表达式检查该字符串是否包含2个以上的单词并且有数字

时间:2017-07-26 14:42:38

标签: java regex

我正在写一个正则表达式来匹配包含超过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。

请提前帮助和谢谢。

1 个答案:

答案 0 :(得分:1)

您可以将此正则表达式与2个前瞻断言一起使用:

^(?=.*\b[a-zA-Z]*\d+[a-zA-Z]*)(?=.*\b[a-zA-Z]+\b)(?:\w+\h+){2,}\w+

RegEx Demo

RegEx分手:

  • (?=.*\b[a-zA-Z]*\d+[a-zA-Z]*):预见确保我们有一个数字
  • (?=.*\b[a-zA-Z]+\b):预示断言我们有一个没有数字的单词
  • (?:\w+\h+){2,}\w+:确保输入中至少有3个字