簡體   English   中英

JS - 積極向前看和結束

[英]JS - Positive Look Ahead & End Of Line

為什么第一次測試失敗了?

/^[ab](?=[cd])$/.test('ac') // => false

/^[ab](?=[cd])/.test('ac')  // => true

只有字符串'ac','ad','bc'和'bd'才能通過。

沒有其他字符串,如'ac bd'或'acbd'。

但是,使用$在第一個正則表達式中沒有幫助,而第二個正在傳遞像'acbd'這樣的字符串。

您需要了解前瞻的工作方式。

(?=[cd])$ positive -ahead-ahead檢查以下字符是否與前瞻后的模式匹配(在您的情況下,字符串的結尾)。 字符串的結尾不是c也不是d 因此,沒有匹配。

你需要把$的先行,使之匹配a

^[ab](?=[cd]$)

請參閱Regex101.com上的演示

正則表達式可視化

Debuggex演示

這個正則表達式應該通過:

/^[ab](?=[cd]$)/.test('ac') 

原因

/^[ab](?=[cd])$/.test('ac') 

失敗,因為$ (輸入結束)后是不是有ab (有一個字母ca )。

/^[ab](?=[cd])$/.test('ac') // => false

由於您未捕獲c因此失敗。 Lookahead0寬度斷言。他們不會捕獲任何東西只是斷言。你的字符串匹配失敗,因為你已經啟用了anchors ,因此整個字符串應該匹配。在你的第二種情況下,它會因為沒有$而獲得部分匹配。

你需要的是什么

^[ab][cd]$

暫無
暫無

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

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