我想寫一個正則表達式將在1 (555) 555-5555
匹配(555)
括號,並用什麼代替括號字符集合號碼中的括號。然而,不存在應如果只有一個括號,如在這場比賽中,1 555)555-5555
或者如果有括號,如(6505552368)
內超過三個數字/字符。使用正則表達式匹配裏面
我最好的嘗試似乎是這個
re = /\((?=.{3})/;
,但只會匹配和替換第一個括號,這是沒有太大的幫助。希望有任何想法。
我想寫一個正則表達式將在1 (555) 555-5555
匹配(555)
括號,並用什麼代替括號字符集合號碼中的括號。然而,不存在應如果只有一個括號,如在這場比賽中,1 555)555-5555
或者如果有括號,如(6505552368)
內超過三個數字/字符。使用正則表達式匹配裏面
我最好的嘗試似乎是這個
re = /\((?=.{3})/;
,但只會匹配和替換第一個括號,這是沒有太大的幫助。希望有任何想法。
如果您需要刪除大約3個位數的第一括號中的字符串中,你可以使用
s.replace(/\((\d{3})\)/, '$1')
詳細
\(
- 一個(
字面符號(\d{3})
- 第1組(後簡稱與$1
反向引用)\)
- 字面)
$1
- 反向引用爲1組或者,如果您只需要刪除這兩個括號中發生之後的零個或多個數字/空格出現,使用
s.replace(/^([\d\s]*)\((\d{3})\)/, '$1$2')
詳細
^
- 串的開始([\d\s]*)
- 第1組(以後簡稱與$1
):0+數字或/和空格\(
- 一個(
炭(\d{3})
- 第2組捕獲3位數字\)
- 字面)
這裏,$1$2
,需要兩個反向引用恢復的(
和)
之外的文本。
這看起來比我的解決方案更好。 +1 – Rajesh
不知道這是否是最好的正則表達式,但是這會工作。
正則表達式:(:^ |()(\ d {3})(:) | $)
爲了演示的目的,我已經取代()
與_
?。
var regex = /(?:^|\()(\d{3})(?:\)|$)/g;
var str = "1 (555) 555-5555 (1234), or (123 or 123)";
console.log(str.replace(regex, "_$1_"))
在我的理解,@Wiktor的回答是好。儘管如此,仍然把我的答案作爲參考。
試試這個:^ \ d +(\ d \ d \ d)\ d + - \ d + $
它接受一個單一的 - 號在括號後的數字只有3括號內的數字?
我改變了一點Rajesh的解決方案,所以每個括號將被替換爲無。
var patt = /\((\d{0,3})\)/g;
var str = '55 (555) 555-(55)55';
console.log(str.replace(patt, "$1"));
但是它並不能解決你是否需要替換嵌套括號。爲此目的,您可以使用此代碼:
var patt = /\((\d{0,3})\)/g;
var str = '55 (5(5)(((5)))) 555-(55)55';
while(str.match(/\((\d{0,3})\)/g))
{
str = str.replace(patt, "$1");
}
console.log(str);
我希望它有幫助。
也許['s.replace(/ \((\ d {3})\)/,'$ 1')'](https://regex101.com/r/K8AUvd/2)?或者,['s.replace(/ ^([\ d \ s] *)\((\ d {3})\)/,'$ 1 $ 2')'](https://regex101.com/r/ K8AUvd/1)? –