簡體   English   中英

匹配兩個字符串的Javascript正則表達式

[英]Javascript regular expression that matches two strings

我不明白那么多正則表達式,我想創建一個匹配兩個字符串的表達式。

我知道對於一個字符串,代碼是.match(/something/) ,如果匹配兩個字符串,則為.match(/something|someotherthing/)

如何編寫僅在文本中找到兩個字符串時才匹配的文件,例如“google microsoft”

要使用單個正則表達式執行此操作,您需要考慮它們可以按任意順序排列的事實。 .*匹配兩個子串之間的任何字符):

/google.*microsoft|microsoft.*google/

注意:如果您想要執行2個以上的子串,這將失控。 3個字符串可以有6不同的順序,5個字符串可以有120訂單,10個子字符串可以訂購3628800不同的方式! 這就是為什么使用語言(Javascript)本身的功能,比如Explosion Pills的答案,可能比嘗試用正則表達式做太多好。

你可以兩次使用.match

str.match(/google/) && str.match(/microsoft/)

在這種情況下,使用.indexOf可能會更快

您還可以使用詳細的正則表達式

.match(/google.*microsoft|microsoft.*google/)

其他答案對於你的具體問題來說完全沒問題,但正如Paulpro指出的那樣,當你有兩個以上的單詞時真的會失控。

最簡單的方法是使用Explosion Pills建議的多次檢查。

但是對於更具可擴展性的正則表達式方法,您可以使用前瞻

/^(?=.*google)(?=.*microsoft)(?=.*apple).../

前瞻實際上並沒有消耗任何東西,所以在檢查完第一個條件后( .*google可以匹配),你回到了字符串的開頭,可以檢查下一個條件。 如果所有前瞻都是這樣,那么該模式才會通過。

請注意,如果您的輸入可能包含換行符,則.*不會。 您將不得不使用[^]*[\\s\\S]*代替(其他人的答案也是如此)。

暫無
暫無

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

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