带javascript正则表达式的边界条件

带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

假设我在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

以下是相同的代码:

<!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)”