나는 모든 "?" "% 3F"까지 올리지 만 작동하지 않습니다. 파이어 버그 콘솔은 말한다 : "SyntaxError: invalid regular expression flag %"
이모든 "?" 자바 스크립트를 사용하여
내 코드 :
var q;
var replacer = new RegExp("?", "%3F");
q = (document.getElementById("q").value).replace(replacer, "");
나는 모든 "?" "% 3F"까지 올리지 만 작동하지 않습니다. 파이어 버그 콘솔은 말한다 : "SyntaxError: invalid regular expression flag %"
이모든 "?" 자바 스크립트를 사용하여
내 코드 :
var q;
var replacer = new RegExp("?", "%3F");
q = (document.getElementById("q").value).replace(replacer, "");
RegExp
생성자의 두 번째 매개 변수는 식에 적용 할 플래그를 포함하는 문자열입니다. 전역 (g
) 플래그를 사용하여 모든 인스턴스를 바꿉니다. 또한 ?
은 정규 표현식의 특수 문자이므로 \
으로 이스케이프 처리해야합니다.
var replacer = new RegExp("\\?", "g");
q = (document.getElementById("q").value).replace(replacer, "%3F");
또는 같은 문자 정규식 사용 :
이 시도는 모든 특수 URI를 탈출하려는 경우
var replacer = /\?/g;
q = (document.getElementById("q").value).replace(replacer, "%3F");
당신은 또한 encodeURIComponent
(또는 아마도 encodeURI
) 방법을 사용하는 것이 좋습니다를 문자 :
q = encodeURIComponent(document.getElementById("q").value);
대신이 시도 :
"sample?".replace(/[?]/g,'%3F')
new RegExp
가 수정 (g|i|m)
새 RegExp를 사용하려면 대신이 작업을 수행해야합니다.이 같은:
var rg = new RegExp("[?]", "g");
"sample?".replace(rg,'%3F');
var find = "\\?";
var replacer = new RegExp(find, 'g');
q = (document.getElementById("q").value).replace(replacer, "%3F");
Eidt : "\\"infront of "?"
그게 내 잘못 이었어. "\\" – purist66
var newelem = oldelem.split("?").join("%3F")
이 트릭
을 할 것인가에 대한
var q = encodeURIComponent(document.getElementById("q").value);
당신은 아마 실제로 encodeURIComponent
을 원하는 있도록하는 URL에서 전달되는 데이터를 인코딩하는 것처럼 소리.
encodeURIComponent('?') //=> "%3F"
물론 많은 다른 특수 문자에도 적용됩니다.
encodeURIComponent('hello?foo#bar') //=> "hello%3Ffoo%23bar"
코드는'\'% 3F \''에 대해 따옴표 대신 graves를 사용합니다. –
@RadGH 고마워요. – Dalorzo