2014-06-24 248 views
-1

我的代码这个简单的线,我想用空的空间来替换字符串的部分:在一个变量这个正则表达式不使用正则表达式的工作

newAddress = myAddress.replace(/^.*?(ramp|arterial|majorroad|street &|highway &|highway|street|street &|street & highway|arterial & street|street & arterial|majorroad &|majorroad & ramp|ramp & majorroad|major road|highway & majorroad)\,/gi, ''); 

,但有:

Highway & Contrada Torremuzza, 95121 Catania CT 

为什么它没有删除“高速公路&”部分?

+1

它成功地将'highway&'与那个正则表达式匹配,但'','最后不能匹配,所以停止它:http://regex101.com/r/oW5bX6 – OnlineCop

+0

@OnlineCop其实这就是答案 –

回答

0

我想我只是我自己解决了:

newAddress = myAddress.replace(/^.*?ramp|arterial|majorroad|street|highway| &|\,/gi, ''); 

更短,更高效的......所以至少它会匹配这个词加上&

干杯, 路易吉

1

它也试图匹配一个逗号,你需要使逗号可选或在这种情况下将其删除。此外,除非你想删除前面的文字像你既不需要的.*也不是逗号以及去除串^锚的开始和.*?

newAddress = myAddress.replace(/(ramp|arterial|majorroad|street &|highway &|highway|street|street &|street & highway|arterial & street|street & arterial|majorroad &|majorroad & ramp|ramp & majorroad|major road|highway & majorroad)/gi, ''); 
1

在我看来。 .*将使您替换字符串前面的所有内容。

尽量只此:

(ramp|arterial|majorroad|street &|highway &|highway|street|street &|street & highway|arterial & street|street & arterial|majorroad &|majorroad & ramp|ramp & majorroad|major road|highway & majorroad) 

或者,如果你在花式优化心情:

(?:majorroad &)?ramp|(?:major r|(?:(?:ramp|highway) &)?majorr)oad|(?:highway|majorroad|street) &|(?:arterial &)?street|(?:street &)?(?:arterial|highway) 

只是开个玩笑。理论上这更有效率,但维护起来更困难。

相关问题