带javascript正则表达式的边界条件
假设我在javascript中有一个字符串 var str=if{{SQL}.Employee.name else{{{SQL}}.EmployeeContact.phone 并希望将{{SQL}}.Employee1替换为{{SQL}}.Employee1 期望输出为: 如果{{SQL}}.Employee1.name或者{{SQL}}.EmployeeContact.phone 但我得到的结果如下: if{{SQL}}.Employee1.name else{{{SQL}}.Employee1.contact.phone 以下是相同的代码:带javascript正则表达式的边界条件,javascript,regex,Javascript,Regex,假设我在javascript中有一个字符串 var str=if{{SQL}.Employee.name else{{{SQL}}.EmployeeContact.phone 并希望将{{SQL}}.Employee1替换为{{SQL}}.Employee1 期望输出为: 如果{{SQL}}.Employee1.name或者{{SQL}}.EmployeeContact.phone 但我得到的结果如下: if{{SQL}}.Employee1.name else{{{SQL}}.Employee
<!DOCTYPE html>
<html>
<body>
<p>Click the button to replace "blue" with "red" in the paragraph below:</p>
<p id="demo">if {{SQL}}.EMPLOYEE.name else {{SQL}}.EMPLOYEECONTACT.phone</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
var str = document.getElementById("demo").innerHTML;
var tr="{{SQL}}.EMPLOYEE"
var res = str.replace(new RegExp("\\b"+tr+"\\b","g"),"
{{SQL}}.EMPLOYEE1");
document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html>
单击按钮将下面段落中的“蓝色”替换为“红色”:
if{{SQL}.EMPLOYEE.name else{{{SQL}}.EMPLOYEECONTACT.phone
试试看
函数myFunction(){
var str=document.getElementById(“demo”).innerHTML;
var tr=“{SQL}}.EMPLOYEE”
var res=str.replace(新的RegExp(“\\b”+tr+“\\b”,“g”),”
{{SQL}}.EMPLOYEE1”);
document.getElementById(“demo”).innerHTML=res;
}
您描述的问题与示例代码中的问题不同。所描述的问题是缺少单词边界。这在您的代码中存在
代码中的问题是,表达式前面也有一个单词边界。这应该与空格和第一个{
之间的位置相匹配,这不符合单词边界的条件
if {{SQL}}.EMPLOYEE
^^ - between these there's no word boundary since neither
space, nor the opening bracket are word characters.
下面是一个删除了第一个单词边界的工作代码示例:
单击按钮将下面段落中的“蓝色”替换为“红色”:
if{{SQL}.EMPLOYEE.name else{{{SQL}}.EMPLOYEECONTACT.phone
试试看
函数myFunction(){
var str=document.getElementById(“demo”).innerHTML;
var tr=“{SQL}}.EMPLOYEE”;
var re=新的RegExp(tr+“\\b”,“g”);
var res=str.replace(re,“{SQL}}}.EMPLOYEE1”);
document.getElementById(“demo”).innerHTML=res;
}
您描述的问题与示例代码中的问题不同。所描述的问题是缺少单词边界。这在您的代码中存在
代码中的问题是,在表达式之前也有一个单词边界。它应该与空格和第一个{
之间的位置相匹配,但不符合单词边界的条件
if {{SQL}}.EMPLOYEE
^^ - between these there's no word boundary since neither
space, nor the opening bracket are word characters.
下面是一个删除了第一个单词边界的工作代码示例:
单击按钮将下面段落中的“蓝色”替换为“红色”:
if{{SQL}.EMPLOYEE.name else{{{SQL}}.EMPLOYEECONTACT.phone
试试看
函数myFunction(){
var str=document.getElementById(“demo”).innerHTML;
var tr=“{SQL}}.EMPLOYEE”;
var re=新的RegExp(tr+“\\b”,“g”);
var res=str.replace(re,“{SQL}}}.EMPLOYEE1”);
document.getElementById(“demo”).innerHTML=res;
}
use regexp“{{SQL}}\.Employee(?!\w)”use regexp“{SQL}}\.Employee(?!\w)”