我需要一个正则表达式*
在一个单词或一组单词的开头和结尾添加一个星号(),但单独的数字除外。旁边有字母的任何数字都可以。很难解释,但是这里有一些例子:
123 Ballister 1 Block --> 123 *Ballister* 1 *Block*
B@llister Place 123 Block N2 45 --> *B@llister Place* 123 *Block N2* 45
123 B@llister# abc --> 123 *B@llister# abc*
我尝试过:
var sample = "@sample 22 @sample2 xyz1";
var x = sample.replace(/[^0-9 ]+/g, function(str) {
return "*"+str.trim()+"*";
});
但它不起作用。我希望有人能帮助我。
这是一个有效的示例:
/((?!\d+\b)\S(?:\S| \D)*)/
替换字符串是
*$1*
这些示例如下所示:
123 Ballister 1 Block
--> 123 *Ballister* 1 *Block*
B@llister Place 123 Block N2 45
--> *B@llister Place* 123 *Block N2* 45
123 B@llister# abc
--> 123 *B@llister# abc*
@rmani empory 123
--> *@rmani empory* 123
#1smple 22 #sample2 #xyz1
--> *#1smple* 22 *#sample2 #xyz1*
我们要匹配整个单词或单词组,但要排除完全由数字组成的单词。所以...
(
开始捕捉
(?!\d+\b)
与整个数字单词不匹配\S
要求使用非空格字符(因此我们不会像* def*
中进行匹配abc def
)(?:\S| \D)
非空格字符或空格和非数字*
零次或多次)
停止捕捉您可以按以下方式使用它:
var sample = "@sample 22 @sample2 xyz1";
var x = sample.replace(/((?!\d+\b)\S(?:\S| \D)*)/g, '*$1*');
var input = document.getElementsByTagName('input')[0],
output = document.getElementsByTagName('span')[0];
input.onkeyup = function (elem) {
output.innerHTML = input.value.replace(/((?!\d+\b)\S(?:\S| \D)*)/g, '*$1*');
};
<p>
Original Text: <input />
</p>
<p>
Replacement: <span />
</p>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句