添加并删除此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>');