簡體   English   中英

JavaScript中的兩位數RegEx Patterm匹配

[英]Two-digit RegEx Patterm Match in JavaScript

下面的表達式:

targetString = targetString.replace(parenthesizedRegEx, "$3$1$11");

其中parenthesizedRegEx是帶括號的正則表達式,將匹配的文本替換為一個字符串,該字符串是第三項,第一項,第一項和文字“ 1”的串聯。 好像忽略了“兩位數”括號項目索引“ $ 11”,並將其視為“ $ 1”和文字“ 1”一樣。

是否應該使用一些轉義或其他分隔?

該結果出現在FF和IE9中。

謝謝你的幫助。 我希望答案很簡單!!

編輯更新:

我做了一個小技巧來全面演示該問題。 我正在使用的regexp包含否定的超前斷言。 看來,當我將所有未完成的聲明包括在內時,它就會失敗。 如果我沒有插入插入的開放括號,那么它也會失敗。 但是,如果我包括斷言的初始開始括號中的所有內容,那么它將起作用。 我知道用(?:...)組成的組沒有編號。 但是似乎必須在斷言中包括所有其他開放式括號,以使計數正確。 因此,您會在jfiddle中看到$ 11不起作用,但$ 10起作用。

http://jsfiddle.net/pxMFx/1/

感謝您的關注。

這對我來說很好:

var regex = /^(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w).*$/i;

alert("abcdefghijklmno".replace(regex,"$3$1$11"));

http://jsfiddle.net/J3RAa/

關鍵是,如果您要針對整個字符串與正則表達式進行匹配,則需要將其與特定位置匹配。 嘗試從上面的正則表達式中刪除.* ,您會發現它破壞了替換。

暫無
暫無

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

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