将PHP RegEx转换为Javascript


Convert PHP RegEx to Javascript

我有一个PHP正则表达式,用于从字符串中删除utf8特殊字符:

['x00-'x1F]|'xC2['x80-'x9F]|'xE2['x80-'x8F]{2}|'xE2'x80['xA4-'xA8]|'xE2'x81['x9F-'xAF]

我需要将其转换为Javascript正则表达式。我试过这个代码:

str = str.replace(/['x00-'x1F]|'xC2['x80-'x9F]|'xE2['x80-'x8F]{2}|'xE2'x80['xA4-'xA8]|'xE2'x81['x9F-'xAF]/g, '');

但它什么也没做。

我需要你的帮助。非常感谢。

简单错误,大影响:

strTest = strTest.replace(/your regex here/g, "$1");
// ----------------------------------------^

如果没有"global"标志,则替换仅发生在第一个匹配中。

附带说明:要删除不满足某种复杂条件的任何字符,例如落入一组特定的Unicode字符范围,可以使用负前瞻:

var regex = /(?!['x00-'x7F]|['xC0-'xDF]['x80-'xBF]|['xE0-'xEF]['x80-'xBF]{2}|['xF0-'xF7]['x80-'xBF]{3})./g;
strTest = strTest.replace(regex, "")

其中regex读取为

(?!#negative look ahead:一个位置*后面不跟*:[…]#以上任意允许的字符范围)#结束前瞻.#匹配此字符(仅当满足以前的条件时!)

试试这个:

str = str.replace(/['x00-'x1F]|'xC2['x80-'x9F]|'xE2['x80-'x8F]{2}|'xE2'x80['xA4-'xA8]|'xE2'x81['x9F-'xAF]/gi, '');