[英]Exclude some characters from word boundary in javascript regular expressions
days = /\\b\\d{2}\\b/; date = /\\b\\d{4}-\\d{2}-\\d{2}\\b/;
2020-12-22應該匹配日期,而不是天,但是兩者都匹配。 有可能使\\ b
不對待-
作為單詞邊界?
您當前的問題中有幾個問題。
是否可以使
\\b
不被視為單詞邊界?
請參閱“ 探索邊界”部分中的有關單詞邊界的tchrist答案 。 這就是它的工作原理,並且沒有辦法重新定義\\b
行為。
2020-12-22應該匹配日期,而不是天,但是兩者都匹配。
為了配合天,並避免與匹配日期days
的正則表達式,你需要回顧后與前瞻- /\\b(?<!-)\\d{2}\\b(?!-)/
-但JavaScript的正則表達式不支持回顧后結構。 您所能做的就是使用消耗模式 ,該模式將匹配字符串的開頭或除連字符- (?:^|[^-])
任何字符,並使用\\d{2}
周圍的捕獲組將其捕獲到一個單獨的組。 請注意,根據您的操作,您可能還需要在后向解決方法模式中使用捕獲組。
如果您打算提取 ,請使用
var days = /(?:^|[^-])\\b(\\d{2})\\b(?!-)/g; var s = "25 and 45 on 2017-04-14 and 2017-04-15."; var res = [], m; while ((m=days.exec(s)) !== null) { res.push(m[1]); } console.log(res)
要替換它們,請使用
var days = /(^|[^-])\\b(\\d{2})\\b(?!-)/g; var s = "25 and 45 on 2017-04-14 and 2017-04-15."; console.log(s.replace(days, "$1[TAG]$2[/TAG]"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.