[英]JavaScript RegExp: match, but don't capture
SO上有一千個正則表達式問題,所以如果已經涵蓋了這個問題我會道歉。 我先看了一下。
鑒於以下模式:
(?:/|-)[0-9]{2}$
以下字符串:
str1 = '65/65/65'
str2 = '65/65/6565'
比賽是:
str1 = '/65' // expected '65'
str2 = '' // as I expected
我的意圖是?:匹配,但不包括/或- 。 什么是正確的正則表達式來滿足我的期望?
通常,這將通過lookbehind完成:
/(?<=[-\/])[0-9]{2}$/
遺憾的是,JavaScript並不支持這些。
相反,既然你知道“額外位”的長度(即一個字符,或者-
或/
),它應該足夠簡單到.substr(1)
它。
沒有看后面,但有獨家匹配( ?:
:),因為它不會失敗。 問題是它將作為整體匹配的一部分包含在內(結果的索引0
)。 因此,最好的替代方法是捕獲您想要的部分。 在您的示例中,可以通過圍繞括號中的數字匹配來完成。
var re = /(?:[/-])([0-9]{2})$/,
str1 = '12/34/56',
str2 = '12/34/5678';
var res1 = str1.match(re); // will want to use res1[1], not res1[0]
var res2 = str2.match(re); // null returned
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.