1

给定以下正则表达式:

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

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

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

一些有效匹配的例子是:

  • 1 两个
  • 3 四五
  • 六七八
  • 九十

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

4

1 回答 1

2

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

[\s\-]将匹配 aspace-..

所以应该是

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

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


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

^\w+([\s\-]\w+){0,2}$
于 2012-11-14T14:41:55.207 回答