[英]Javascript Regex Match the first the occurrence
我有這個正則表達式(它沒有做我想要的): /^.*\\/(eu|es)(?:\\/)?([^#]*).*/
其實就是js版本of: /^.*/(eu|es)(?:/)?([^#]*).*/
(?:/)?([ /^.*/(eu|es)(?:/)?([^#]*).*/
嗯,它沒有做我想要的,當然它的工作原理。 :)鑒於此URL:
前兩個網址按預期工作。 第三個不是我想要的。 由於后來在網址上找到“eu”,它與第二個eu而不是第一個eu匹配。 所以我希望它符合這個:[1] ='eu',[2] ='bla / eubla'
我該怎么辦?
謝謝。 :)
制作第一個*
ungreedy
/^.\*?\/(eu|es)(?:\/)?([^#]\*).\*/
順便說一句,你真的需要在JavaScript中逃避*
嗎? 這不行嗎?
/^.*?\/(eu|es)(?:\/)?([^#]*).*/
我想你想要的是對第一個重復角色的不重復的重復*
。 試試這個:
/^.\*?\/(eu|es)(?:\/)?([^#]\*).\*/
唯一的區別是問號?
在第一個*
。 如果缺少這個, *
將匹配盡可能多的字符,從而導致第三個示例中的不良行為。
上面的答案是貪婪與非貪婪是好的,但為什么還要打擾匹配URL的開頭呢? 剛開始表達:
/\/(eu|es)
它將匹配在線上找到的第一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.