我想匹配任何字母中的\s
字符,不是数字:
'abc def ghi'
应与c
和d
之间的空格匹配f
和g
。
我认为我应该使用积极的外观,但据我所知,它在js中不具备意义。任何解决方案?
答案 0 :(得分:3)
这个应该有效
(?=[^0-9]+)(\s+)(?=[^0-9]+)
或其他棘手的方法,您只需先用一些特殊文字替换条件空格,例如我使用_SPACE_
/([^0-9])(\s+)(?=[^0-9])/$1_SPACE_/
原文:
abc defg xhi abc 111 999 111 abc def
更换后:
abc_SPACE_defg_SPACE_xhi_SPACE_abc 111 999 111 abc_SPACE_def
然后,您只需搜索_SPACE_
而不是条件空格。
答案 1 :(得分:1)
您可以使用拆分功能
str = str.replace(" ", "<span> </span>");
然后您可以使用每个函数放置在标记中:)
答案 2 :(得分:1)
text = text.replace(/\s+|(?: )+/g,function(x,i){
if( text.charAt(i-1).match(/[a-zA-Z]/) == null && text.charAt(x.length+i).match(/[a-zA-Z]/) == null ){
return '<span>'+x+'</span>';
} else return x;
});
我改变了规则,白色空间不应与a-zA-Z匹配