簡體   English   中英

如何在JavaScript中使用包含特殊字符的正則表達式

[英]How to use a Regular Expression in JavaScript which contains special characters

抱歉,今天早上可能很愚蠢,但是我對正則表達式了解不多,但是創建了一些我想與https://regex101.com/一起使用的東西

但是...如果不先轉義,我將無法使用他們在Javascript中建議的代碼。

這是正則表達式: (?<=color:\\s)([az]+)

哪個功能符合我的要求(在CSS文件中,在顏色后面匹配一個詞)

但是,他們建議在JS中使用的代碼是:

var re = /(?<=color:\s)([a-z]+)/g; 
var str = ' color: black';
var m;

while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}

第一行不起作用,所以我將其轉義為: var re = /\\(?<=color:\\s\\)([az]+)/i ,它將停止Javascript錯誤,但與弦了。

我究竟做錯了什么?

順便說一句...誰能指出我要擴展此正則表達式以排除括號后面的任何內容? 我試圖僅獲取顏色名稱,因此“顏色:黑色;” 應該匹配,“ box-shadow:black ... etc”也應該匹配,但是理想情況下,不應該匹配“ color:rgb(... etc”

確實,盡管有一些變通方法 ,JS不支持回溯:

  • 反轉字符串,然后進行匹配以啟用先行匹配
  • 使用捕獲組
  • 使用while循環進行re.lastIndex操作

在這種情況下,使用捕獲組要容易得多:

 var re = /\\bcolor:\\s*([az]+)/ig; var str = ' color: black'; var m; while ((m = re.exec(str)) !== null) { if (m.index === re.lastIndex) { re.lastIndex++; } // m[1] is holding our value! document.getElementById("res").innerHTML = m[1]; } 
 <div id="res"/> 

暫無
暫無

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

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