首页
学习
活动
专区
圈层
工具
发布

正则化
EN

Stack Overflow用户
提问于 2021-09-21 14:46:17
回答 1查看 85关注 0票数 1

我正在尝试创建一个正则表达式来替换这种字符串:

(x bla bla bla)

我正在寻找用(x)替换(x bla bla bla),然后添加新文本

这是我的小提琴:小提琴手

这里我的代码:

代码语言:javascript
复制
var StartingLetter = 'x';
var NewText = 'Dadidu'
var regexTest = new RegExp('('+StartingLetter +')',"g");
            
$('.select_list option').text(function(i, oldText) {
    //BlankText transform (x bla bla bla) by (x) ==> Doesnt work
    var BlankText= oldText.replace(/\('+StartingLetter +'*?\)/, '('+StartingLetter +')')

    //Then i replace with the new sentence (x) by (x Dadidu) 
    return oldText.replace(regexTest, StartingLetter +' '+ NewText);              
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 14:58:53

您需要对代码进行如下修改:

代码语言:javascript
复制
$(document).ready(function() {
var StartingLetter = 'x';
var NewText = 'Dadidu'
            
$('.select_list option').text(function(i, oldText) {
    return oldText.replace(new RegExp(String.raw`\((${StartingLetter})[^()]*\)`,'g'), `($1 ${NewText})`)
   })
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://altair-html.tzdthemes.com/assets/js/common.min.js"></script>
<select class="select_list">
<option>Hello option A (x blabla bla)</option>
<option>Hello option B (x dididdidi)</option>
</select>

这里,

  • new RegExp(String.raw`\((${StartingLetter})[^()]*\)`,'g')动态声明正则表达式,String.raw帮助避免重复反斜杠,g允许匹配字符串中所有不重叠的情况。注意添加的[^()]*部件,它匹配除圆括号以外的零个或多个字符,并且${StartingLetter}用捕获括号包装。
  • ($1 ${NewText})是替代模式,$1代表捕获的Group 1值,${NewText}是要附加到(x部件的单词。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69270999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档