은 내가 그 변수를 절 "이름"및 "텍스트"를 식별하고 끌어 정규식 구축을 위해 노력하고REGEX 도움말, 변수 이름 애프터 =
[QUOTE=Name;123]Text[/QUOTE]
이 텍스트 블록을 서명합니다.
이것은 모두 javascript str.replace 함수로 들어가지만 작동 시간은 아주 길어집니다.
아이디어가 있으십니까?
감사합니다. 에서
은 내가 그 변수를 절 "이름"및 "텍스트"를 식별하고 끌어 정규식 구축을 위해 노력하고REGEX 도움말, 변수 이름 애프터 =
[QUOTE=Name;123]Text[/QUOTE]
이 텍스트 블록을 서명합니다.
이것은 모두 javascript str.replace 함수로 들어가지만 작동 시간은 아주 길어집니다.
아이디어가 있으십니까?
감사합니다. 에서
아래 대체 할 것입니다 :
var string = "[QUOTE=Name;123]Text[/QUOTE]";
var search = /\[QUOTE=(.*?);\d+\]([\s\S]*?)\[\/QUOTE\]/i;
var replacement = "Quoted by $1: $2";
var result = string.replace(re, replacement);
// result becomes "Quoted by Name: Text"
[quote=user;1]text[/quote]
이 [QUOTE=user;1]text[/QUOTE]
;
다음과 일치뿐만 아니라 일치하지만, 그것을 무시합니다..
은 개행과 일치하지 않으므로 모든 문자를 일치 시키려면 [\s\S]
을 사용했습니다..*?
을 [a-z0-9 ]*
으로 바꿉니다. 사용자 이름 길이가 3에서 20 사이 인 경우 다음을 사용할 수 있습니다. [a-z0-9 ]{3,20}
이 RE는 매우 간단하며 중첩 된 따옴표로는 작동하지 않습니다. 정규식을 사용하는 HTML 구문 분석과 마찬가지로 BB 코드를 올바르게 변환하는 단일 RE를 작성하는 것은 불가능합니다. 태그를 올바르게 닫을 수 있도록 태그 열기와 닫기 태그를 검색하는 실제 BB 코드 파서를 사용하십시오.
"[QUOTE=Name;123]Text[/QUOTE]".match(/\[QUOTE=(.*);.*\](.*)\[\/QUOTE\]/)
결과 :
["[QUOTE=Name;123]Text[/QUOTE]", "Name", "Text"]
은 기본적으로 당신이 그들을 구문 분석하는 (.*)
으로 변수를 대체하고 특수 문자를 이스케이프해야합니다.
것은 당신이 할 수있는 그들을 제거 할 때 :
"[QUOTE=Name;123]Text[/QUOTE]".replace(/\[QUOTE=.*;.*\].*\[\/QUOTE\]/, "[QUOTE=;123][/QUOTE]")
이 시도 (가정 이름을, 텍스트는 영숫자) : 귀하의 요구 사항에 따라
\[QUOTE=(\w+);123\](\w+)\[/QUOTE\]
var re = /\[QUOTE=(\w+);123\](\w+)\[\/QUOTE\]/;
var str = "[QUOTE=Name;123]Text[/QUOTE]";
var newstr = str.replace(re, "$1 - $2"); // $2 is text, $1 is name
편집 교체 문자열입니다.
이름 뒤에 123을 쓰면 어쨌든 세미콜론과 숫자가 제외됩니다. – Mark