簡體   English   中英

正則表達式不起作用

[英]Regular expression doesn't work

我有使用正則表達式的簡單代碼行,我想用空格替換字符串:

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 

為什么沒有刪除“高速公路&”部分?

它也在嘗試匹配逗號,因此您需要使逗號為可選,或在這種情況下將其刪除。 另外,除非您也要刪除前面的文本,否則也要刪除字符串^ anchor和.*?的開頭.*?

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, '');

在我看來,您既不需要.*也不需要逗號。 .*將導致您替換字符串前面的所有內容。

試試這個:

(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) 

開玩笑。 從理論上講,這是更有效的方法,但是卻很難維護。

我想我自己解決了:

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

更短,更高效...因此至少它將與單詞加&匹配

干杯,路易吉

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM