我有一个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, '');