我讀到的正則表達式的一些教程和我看到的一句話:在Javascript中替代(?<= exp)?
(?< = EXP)匹配以下前綴EXP
有關的任何位置,我有一些字符串:
分享
護理
如果我想查找包含「are」的所有字符串,但「are」必須遵循「Sh」:/(?<=Sh)are/i
。現在只有「分享」匹配,並且匹配索引是2(匹配「是」,而不是從「分享」中分享)。
但Javascript沒有這個正則表達式。我怎麼能在Javascript中這樣做?
謝謝!
我讀到的正則表達式的一些教程和我看到的一句話:在Javascript中替代(?<= exp)?
(?< = EXP)匹配以下前綴EXP
有關的任何位置,我有一些字符串:
分享
護理
如果我想查找包含「are」的所有字符串,但「are」必須遵循「Sh」:/(?<=Sh)are/i
。現在只有「分享」匹配,並且匹配索引是2(匹配「是」,而不是從「分享」中分享)。
但Javascript沒有這個正則表達式。我怎麼能在Javascript中這樣做?
謝謝!
你不能這樣做。在Javascript的正則表達式實現中沒有看後面的斷言。
替代
在某些情況下,你可以改用分組捕獲你真正想匹配:/Sh(are)/i
如果你真的需要lookbehinds你可以使用一個第三方正則表達式庫。
相關
您可以使用non capturing groups
/(?:sh)(are)/
這告訴正則表達式找到are
沒有捕捉sh
組。然而,在這種情況下,你有一個簡單的模式來匹配,這是沒有必要的,你可以找到其他解決方案的答案,這樣做
/sh(are)/
匹配則只有第一組
''Share Care'.match(/(?=.+?are)(。+?)/)'returns'[「S」,「S」]' - 測試多少? – WTK
謝謝,但它不是我想要的。 –
如果我很好理解,我會用這個正則表達式
/(Sh|\b)(are)/gi
其中are
只能是一個字或Sh
前面的子字符串。
感謝您的回答。但是,如果我使用這個正則表達式,匹配的索引是0,而不是2.你能給我更多的解決方案嗎? –
爲什麼指數應該重要?你想匹配什麼字符串?例如,請提供一個小提琴 – fcalderan
以突出顯示結果。我想找到「是」滿足一些條件。 –
的唯一方法(當然這,如果你不也有你的正則表達式在先行斷言僅適用)是扭轉字符串,並使用在先行,而不是回顧後的:
/era(?=hS)/i
你只是想到了我。 –
謝謝您回答。我想匹配的索引是2(匹配「是」):「分享」。搜索(正則表達式)= 2。任何想法對我? –
@BoodCarley:您可以使用第三方正則表達式庫。查看我的更新以獲取類似問題的鏈接。 –