我尝试将脚本附加到页面,但我得到答案:
无效的正则表达式:缺少/
有人可以看看我的RegEx代码中的问题在哪里?
function init(){
var script = document.createElement("script");
script.type = "text/javascript";
script.text = 'jx = {'+
'b: function () {'+
'var b = !1;'+
'if ("undefined" != typeof ActiveXObject) { try {'+
'b = new ActiveXObject("Msxml2.XMLHTTP");'+
' } catch (c) {'+
' try {'+
' b = new ActiveXObject("Microsoft.XMLHTTP");'+
' } catch (a) {'+
' b = !1;'+
' }'+
' } } else { if (window.XMLHttpRequest) try {'+
' b = new XMLHttpRequest;'+
'} catch (h) {'+
' b = !1;'+
' }'+
'}'+
' return b;'+
' },'+
'load: function (b, c, a, h, g) {'+
' var e = this.d();'+
' if (e && b) {'+
' e.overrideMimeType && e.overrideMimeType("text/xml");'+
' h || (h = "GET");'+
' a || (a = "text");'+
' g || (g = {});'+
' a = a.toLowerCase();'+
' h = h.toUpperCase();'+
' b += b.indexOf("?") + 1 ? "&" : "?";'+
' var k = null;'+
' "POST" == h && (k = b.split("?"), b = k[0], k = k[1]);'+
' e.open(h, b, !0);'+
' e.onreadystatechange = g.c ? function () {'+
' g.c(e)'+
'} : function () {'+
' if (4 == e.readyState)'+
' if (200 == e.status) {'+
' var b = "";'+
' e.responseText && (b = e.responseText);'+
' "j" == a.charAt(0) ? (b = b.replace(/[\n\r]/g, ""), b = eval("(" + b + ")")) : "x" == a.charAt(0) && (b = e.responseXML);'+
' c && c(b)'+
' } else g.f && document.getElementsByTagName("body")[0].removeChild(g.f), g.e && (document.getElementById(g.e).style.display = "none"), error && error(e.status)'+
' };'+
' e.send(k);'+
' }'+
'},'+
' d: function () {'+
' return this.b()'+
' }'+
'};'+
'alert("loaded");';
document.body.appendChild(script);
}
你知道错了!
答案 0 :(得分:1)
除了你正在做的事情之外,问题在于你没有逃避反斜杠。 reges
/[\n\r]/g
本身完全没问题,但是你没有写一个文字的RegExp实例,你正在写一个字符串。字符串\n
是新行的转义序列。为了解决这个问题,请逃避反斜杠:
var str = '/[\\n\\r]/g';
会做的伎俩