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

Adding removing leading and trailing spaces in this JavaScript RegEx

本文关键字:空格 删除 JavaScript 正则表达式 添加 在此      更新时间:2023-09-26
如何

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

我尝试将's放在几个地方,但最终得到了奇怪的结果。

myString就是这样,是从 PHP 脚本with尾随空格发送的。

原始代码

var myString = "::This is string 1 ::This is string 2! ";
myString = myString.replace(/'::(.+?)(?![^::])/g,'<li>$1</li>');
alert(myString);

var myString = "::This is string 1 ::This is string 2! ";
myString = myString.replace(/'::(.+?)(?![^::'s])/g,'<li>$1</li>');
alert(myString);

我试图实现的最终结果是

<li>This is string 1</li> // No trailing spaces before or after the `This` and `1`
<li>This is String 2</li>

小提琴

关键是您将空格与 .+? 匹配,并且(?![^::'s])只告诉正则表达式引擎在字符后跟空格或:时不匹配。

由于您已经在使用惰性匹配,因此您只需要使用贪婪的's*子模式来匹配.+?后的空格。

::(.+?)'s*(?=::|$)

查看演示

解释:

  • :: - 比赛 2 :
  • (.+?) - 匹配并捕获除换行符以外的一个或多个字符并捕获到组中 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>');

JSFiddle