3
我有一個字符串包含我的名字christiancattano
和正則表達式搜索模式定義爲這樣Regex101和JS正則表達式搜索出不同的結果
/(cattano|cattan|attano|chris|catta|attan|ttano|chri|hris|catt|atta|ttan|tano|chr|hri|ris|cat|att|tta|tan|ano)+/ig
在regex101如果我進入最上面一欄我的搜索模式,並進入逐字,christiancattano
進入測試字符串框,它將高亮chris
和cattano
。這是我期待的行爲。
在我的javascript代碼,如果我運行下面的行
var regExPattern: string = '(cattano|cattan|attano|chris|catta|attan|ttano|chri|hris|catt|atta|ttan|tano|chr|hri|ris|cat|att|tta|tan|ano)+';
var regExObj: RegExp = new RegExp(regExPattern, 'g');
var match: string[] = regExObj.exec('christiancattano');
console.log(`match: ${match}`);
我收到此輸出
match: chris,chris
爲什麼是它regex101顯示了我的比賽是我所期望的,chris
和cattano
,但我的Javascript代碼產生了不同的結果?
使用'match':''christiancattano'.match(regExObj)' –
在Javascript中,當你執行使用'g'修飾符的RegExp,它一次只返回一個匹配。你必須在循環中調用它來獲得所有的匹配。刪除修飾符。 – Barmar
@WiktorStribiżew我的男人!你又做到了!非常感謝!我剛剛閱讀了string.match()和regex.exec()之間的區別,並且我看到我在嘗試獲取匹配項的字符串[]時出錯。今天再次感謝您的幫助! – Chris