鉴于以下正则表达式:
^((?:\d+\s)?\w+(?:\s\w+)?)
哪个提取第一个(最多)2个单词(前面有一个数字,如果有一个单词),我怎样才能将它调整为包含连字符的单词?
我尝试在第一个\-
之后添加w+
,但是只找到了连字符的前半部分并打破了原始功能。
有效匹配的一些示例是:
它们是地址字段的组成部分,因此,我想,也可能在某处有撇号,我怎么能检查它呢?
答案 0 :(得分:2)
使用[\s\-]
代替\s
[\s\-]
会匹配space
或-
..
所以它应该是
^((?:\d+[\s\-])?\w+(?:[\s\-]\w+)?)
以上正则表达式不能用于您的有效匹配..您应该使用下面给出的正则表达式
匹配由-
或空格分隔的多个单词的更好方法是
^\w+([\s\-]\w+){0,2}$