比较和替换在JavaScript中使用正则表达式:在中间留下一个词
comparing and replacing using regex in javascript : leaving a word in between
我正在尝试替换如下所示的模式:源语言:
<a href="#idvalue">welocme</a>
需要替换为:
<a href="javascript:call('idvalue')">welcome</a>
尝试了以下方法:
String text = "<a href='"#idvalue'">welocme</a>";
Pattern linkPattern = Pattern.compile("a href='"#");
text = linkPattern.matcher(text).replaceAll("a href='"javascript:call()'"");
但无法在两者之间添加 idvalue。请帮帮我。提前谢谢。
一个简单的
怎么样
text.replaceAll("#idvalue","javascript:call('idvalue')")
仅适用于这种情况。如果您希望做一些更全面的事情,那么正如另一个答案中所建议的那样,XML 解析器将是理想的选择。
尝试获取可能更改的部分,并且您希望保留为一个组,例如:
text = text.replaceAll( "href='"#(.*?)'"", "href='"javascript:call('$1')" );
这基本上匹配并替换了href="whatever"
,通过捕获组 1 捕获whatever
,并使用 $1
作为对组 1 内容的引用重新插入替换字符串。
请注意,将正则表达式应用于HTML和Javascript可能很棘手(允许单引号或双引号,注释,嵌套元素等(,因此最好使用html解析器。
将捕获组添加到匹配器正则表达式,然后在替换中引用该组。我发现使用 JavaDoc for Matcher,您需要使用"$"而不是"''"来访问替换中的捕获组。
法典:
String text = "<a href='"#idvalue'">welcome</a>";
System.out.println("input: " + text);
Pattern linkPattern = Pattern.compile("a href='"#([^'"]+)'"");
text = linkPattern.matcher(text).replaceAll("a href='"javascript:call('$1')'"");
System.out.println("output: " +text);
结果:
相关文章:
- 正则表达式在字符串中找到base64
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何使用正则表达式在javascript中拆分字符串
- 用正则表达式在js中进行函数修剪
- Javascript 正则表达式在特定单词或数字之后拆分
- 谷歌浏览器模式正则表达式在使用setCustomValidity动态创建表单时不起作用
- 正则表达式在 JavaScript 中不允许
- 我需要这个正则表达式在javascript中使用
- 如何基于正则表达式在 O365 邮件应用程序中加载不同的页面
- 如何在 javascript 中使用正则表达式在其他两个字符串之间找到一个字符串
- Javascript正则表达式在IE中失败,但在Chrome和Edge中工作
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效
- 正则表达式在浏览器上有效,但在Node.js中无效
- 使用正则表达式在方括号内查找多个字符
- Javascript正则表达式:在同一模式中混合匹配和不匹配
- jquery正则表达式在2个分隔符之间进行替换
- 正则表达式.在满足条件之前,避免匹配字符串
- 如何使用正则表达式在字符串中间加加 1
- 比较和替换在JavaScript中使用正则表达式:在中间留下一个词
- 正则表达式:在另一个字符串的中间匹配url字符串