将PHP RegEx转换为Javascript

时间:2015-02-21 19:39:47

标签: javascript php regex

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

但它什么也没做。

我需要你的帮助。 谢谢。

2 个答案:

答案 0 :(得分:3)

简单的错误,大的影响:

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

没有"全球"标志,替换仅发生在第一场比赛中。

附注:要删除不符合某些复杂条件的任何字符,例如落入某组某些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: a position *not followed by*:
  […]    #   any allowed character range from above
)        # end lookahead
.        # match this character (only if previous condition is met!)

答案 1 :(得分:0)

试试这个:

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