簡體   English   中英

JavaScript匹配(后跟一個數字

[英]JavaScript match ( followed by a digit

在字符串n+n(n+n) ,其中n代表任何數字或數字,我想進行匹配(並將其替換為*( ,但前提是它后面跟隨數字或數字。

例子:

  • 我想將2+22(2+2)更改為2+22*(2+2)
  • 我想將-1(3)更改為-1*(3)
  • 4+(5/6)應該保持原樣。

這就是我所擁有的:

var str = '2+2(2+2)'.replace(/^[0-9]\(/g, '*(');

但這是行不通的。 提前致謝。

刪除^ ,然后將數字分組:

'2+2(2+2)'.replace(/([0-9])\(/g, '$1*(')
'2+2(2+2)'.replace(/(\d)\(/g, '$1*(')    //Another option: [0-9] = \d

建議2.通常是有效數字(= 2 )。 下面的RegExp刪除數字和括號之間的點。

'2+2(2+2)'.replace(/(\d\).?\(/g, '$1*(') //2.(2+2) = 2*(2+2)

括號創建一個組,可使用$n進行引用,其中n是組的索引: $1

您以^...開頭了RegExp,這意味着:匹配以...開頭的字符串的一部分。 這種行為當然不是故意的。

var str = '2+2(2+2)+3(1+2)+2(-1/2)'.replace(/([0-9])\(/g, '$1*(');

http://jsfiddle.net/ZXU4Y/3/

這跟您所寫的一樣(括號內必須跟數字)。

因此4(將更改為4*(例如對於4(-1/2)可能很重要

您可以使用捕獲組和反向引用來執行此操作。

請查看此頁面的 “替換文本語法”下的更多詳細信息。

這是一個小提琴可以滿足您的要求。

希望這可以幫助。

暫無
暫無

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

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