我想要匹配数据中所有的/
,但是需要去掉<>
中的/
,例如:<br />
,还有</a>
,请问怎么匹配?
我自己想出一个解决办法,有点绕,但是是目前唯一能解决问题的办法。如果大家有更好的方法,希望能够指教并回复,谢谢。
<>
中的/
,将其替换成特定字符(我这里替换的是urlencode
后的字符)/
进行替换PHP代码如下:
$str = preg_replace('/<([^<>]*)\/([^<>]*)>/is', '<$1%2F$2>', '</a>badafa/<br />/89892 / dafdf/ a
<hr />
</a>');
$str = str_replace('/', '//', $str);
var_dump(str_replace('%2F', '/', $str));
我的方法分了两个步奏,先将所有尖括号内的所有内容替换为空,再匹配所有斜杠
str='<\a>badafa/<br />/89892/dafdf/a<hr />';
newStr=str.replace(/<[^>]*>/g,""); OUTPUT: "badafa//89892/dafdf/a"
newStr.match(/\//g); OUTPUT: ["/", "/", "/", "/"]
是不是分两个步奏把这个问题复杂化了? - -
可以试试正向否定查找:
/\/(?!>)/
表示匹配一个/
仅当其后面不跟>
的时候弹出false
弹出true