在下面的字符串中,我想匹配一个在连字符之前或之后有空格的字符串,但如果没有空格也可以:
a(54 -4 Broadway
-匹配
b(54 - 4 Broadway
-匹配
c(54- 4 Broadway
-匹配
1d(54-4 Broadway
-是否应与匹配
s*-s*
<-匹配最后一个例子,但不是必需的。
绑架集团?也匹配最后一个案例->
(s*-s*)|(^s-^s)
感谢
您可以使用以下正则表达式:
/d+(?!-d)s*?-s*?d+s*?Broadway/g
正则表达式匹配one or more digits
,后面是negative lookahead
,表示hyphen
和digit
。
然后,它匹配零个或多个White Spaces
、一个hyphen
和零个或更多个White Spaces
,然后匹配一个或更多digits
和零个以上White Spaces
,以字符串'Broadway'
结束。
根据评论编辑:
/w+(?!-w)s*?-s*?w+.*/g
现在,它将匹配Word
字符(包括数字(而不是数字,并匹配行的其余部分,无论它是什么文本。
尽管如此,它并不匹配:百老汇大街54号-4号。
这是在这种情况下有效的正则表达式(有人发布了它,但后来删除了…(:
str.match(/s+-s*|-s+/)