如何添加代码以删除此正则表达式的前导和尾随空格?
我尝试将$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);
答案 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>');