添加并删除此JavaScript正则表达式中的前导空格和尾随空格

添加并删除此JavaScript正则表达式中的前导空格和尾随空格,javascript,regex,Javascript,Regex,如何添加代码以删除此正则表达式的前导空格和尾随空格 我试着把\s放在几个地方,但结果很奇怪 myString就是这样,它是从带有尾随空格的PHP脚本发送的 原始代码 var myString = "::This is string 1 ::This is string 2! "; myString = myString.replace(/\::(.+?)(?![^::])/g,'<li>$1</li>'); alert(myString); var myString

如何添加代码以删除此正则表达式的前导空格和尾随空格

我试着把
\s
放在几个地方,但结果很奇怪

myString
就是这样,它是从带有尾随空格的PHP脚本
发送的

原始代码

var myString = "::This is string 1 ::This is string 2! ";

myString = myString.replace(/\::(.+?)(?![^::])/g,'<li>$1</li>');

alert(myString);
var myString=“::这是字符串1::这是字符串2!”;
myString=myString.replace(/\:(.+?)(?![^::])/g,
  • $1
  • ); 警报(myString);
    尝试

    var myString=“::这是字符串1::这是字符串2!”;
    myString=myString.replace(/\:(.+?)(?![^::\s])/g,“
  • $1
  • ”; 警报(myString);
    我想要达到的最终结果是

    <li>This is string 1</li> // No trailing spaces before or after the `This` and `1`
    <li>This is String 2</li>
    
  • 这是字符串1
  • //在'This'和'1'之前或之后没有尾随空格`
  • 这是字符串2

  • 关键是要将空格与
    +?
    匹配,
    (?![^::\s])
    只告诉正则表达式引擎,如果后面跟有空格或
    则不匹配字符

    因为您已经在使用惰性匹配,所以只需要使用贪婪的
    \s*
    子模式来匹配
    +?
    后面的空白

    使用

    说明:

    • ::
      -匹配2
      s
    • (.+?)
      -将一个或多个字符(换行符除外)匹配并捕获到组1中
    • \s*
      -贪婪地匹配零个或多个空格
    • (?=::|$)
      -仅当后跟
      或字符串结尾时
    下面是我展开正则表达式的尝试(看起来比上面的更有效率):

    请参见尝试以下操作:

    var myString = "::This is string 1 ::This is string 2! ";
    
    myString = myString.replace(/\s*\::\s*(.*?)\s*(?=(::|$))/g,'<li>$1</li>');
    
    var myString=“::这是字符串1::这是字符串2!”;
    myString=myString.replace(/\s*\::\s*(*?)\s*(?=(::$)/g,“
  • $1
  • ”);

    试试看
    ::(.+?)\s*(?=::|$)
    
    ::(\S*(?:(?=(\s+))\2(?!:|$)\S*)*)
    
    var myString = "::This is string 1 ::This is string 2! ";
    
    myString = myString.replace(/\s*\::\s*(.*?)\s*(?=(::|$))/g,'<li>$1</li>');