正则表达式匹配双连字符串

时间:2012-11-14 14:37:04

标签: regex

鉴于以下正则表达式:

^((?:\d+\s)?\w+(?:\s\w+)?)

哪个提取第一个(最多)2个单词(前面有一个数字,如果有一个单词),我怎样才能将它调整为包含连字符的单词?

我尝试在第一个\-之后添加w+,但是只找到了连字符的前半部分并打破了原始功能。

有效匹配的一些示例是:

  • 1两个
  • 3 Four Five
  • 六七八
  • Nine Ten

它们是地址字段的组成部分,因此,我想,也可能在某处有撇号,我怎么能检查它呢?

1 个答案:

答案 0 :(得分:2)

使用[\s\-]代替\s

[\s\-]会匹配space- ..

所以它应该是

^((?:\d+[\s\-])?\w+(?:[\s\-]\w+)?)

以上正则表达式不能用于您的有效匹配..您应该使用下面给出的正则表达式


匹配由-或空格分隔的多个单词的更好方法是

^\w+([\s\-]\w+){0,2}$