在此JavaScript RegEx中添加删除前导和尾随空格

时间:2016-02-04 08:22:22

标签: javascript regex

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

我尝试将$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname", "$dbuser","$dbpwd");放在几个地方,但结果很奇怪。

\s就是它的样子,并从PHP脚本myString尾随空格发送。

原始代码

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);

Fiddle

2 个答案:

答案 0 :(得分:4)

重点是您将空格与.+?匹配,(?![^::\s])仅告知正则表达式引擎与字符后面跟一个空格或:不匹配。

由于您已经在使用延迟匹配,因此您只需要使用贪婪的\s*子模式来匹配 .+?之后的空白

使用

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

请参阅demo

<强>解释

  • :: - 匹配2 : s
  • (.+?) - 匹配并捕获第1组除换行符以外的一个或多个字符
  • \s* - 贪婪地匹配零个或多个空格
  • (?=::|$) - 仅在后跟::或字符串结尾。

这是我尝试展开正则表达式(看起来比上面的效率更高):

::(\S*(?:(?=(\s+))\2(?!:|$)\S*)*)

请参阅another demo

答案 1 :(得分:1)

试试这个:

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

myString = myString.replace(/\s*\::\s*(.*?)\s*(?=(::|$))/g,'<li>$1</li>');

JSFiddle