簡體   English   中英

從JavaScript正則表達式的單詞邊界中排除一些字符

[英]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.

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