我想在正斜杠之后和结束分组之前替换文本。
My text:
<h3>notThisText/IWantToReplaceThis)<h3>
$('h3').text($('h3').text().replace(regEx, 'textReplaced'));
Wanted result after replace:
notThisText/textReplaced)
我试过了
regex = /([^\/]+$)+/ //replaces the parantheses as well
regex = \/([^\)]+) //replaces the slash as well
但正如你在我的评论中所看到的,这些都不包括斜杠和结束的范例。有人可以帮忙吗?
答案 0 :(得分:1)
像/(?<=\/)[^)]+(?=\))/
这样的模式在JS中不起作用,因为它的正则表达式引擎不支持lookbehind构造。因此,您应该使用以下解决方案之一:
s.replace(/(\/)[^)]+(\))/, '$1textReplaced$2')
s.replace(/(\/)[^)]+(?=\))/, '$1textReplaced')
s.replace(/(\/)[^)]+/, '$1textReplaced')
s.replace(/\/[^)]+\)/, '/textReplaced)')
(...)
形成一个捕获组,可以使用替换模式中的$
+数字(反向引用)引用该捕获组。第一个解决方案是使用/
和)
,并将它们放入捕获组。如果您需要匹配连续的重叠匹配,请使用第二个解决方案(s.replace(/(\/)[^)]+(?=\))/, '$1textReplaced')
)。如果最后不需要)
,则第三个解决方案(replace(/(\/)[^)]+/, '$1textReplaced')
)将会执行。如果s.replace(/\/[^)]+\)/, '/textReplaced)')
和/
是预先知道的静态值,则最后一个解决方案()
)将有效。
答案 1 :(得分:0)
var text = "notThisText/IWantToReplaceThis";
text = text.replace(/\/.*/, "/whatever");
output : "notThisText/whatever"`
答案 2 :(得分:0)
您可以使用str.split('/')
var text = 'notThisText/IWantToReplaceThis';
var splited = text.split('/');
splited[1] = 'yourDesireText';
var output = splited.join('/');
console.log(output);
答案 3 :(得分:0)
尝试以下:在你的情况下,startChar ='/',endChar =')',origString = $('h3')。text()
function customReplace(startChar, endChar, origString, replaceWith){
var strArray = origString.split(startChar);
return strArray[0] + startChar + replaceWith + endChar;
}
答案 4 :(得分:0)
首先,您没有明确定义要替换的文本格式和非替换部分的格式。例如,
notThisText
是否包含任何斜杠/
?IWantToReplaceThis
是否包含任何括号)
?由于存在太多不确定性,此处的答案仅显示模式与您的示例完全匹配:
yourText.replace(/(\/).*?(\))/g, '$1textReplaced$2')