JavaScript의 Regex에 대한 도움
-
05-07-2019 - |
문제
HTML 요소의 클래스 이름에서 검색된이 샘플 텍스트가 있습니다.
rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive
각 예제에서 "test1"/"test2"데이터를 일치 시키려고합니다. 나는 현재 "err-test1"유형의 단어와 일치하는 다음 regex를 사용하고 있습니다. 하이픈 (-) 이후 데이터 만 제한하는 방법을 알 수 없습니다.
/err-(\S*)/ig
이 벽에 머리가 두드려가 아파요.
해결책
내가 읽고있는 것에서 당신의 코드는 이미 작동합니다.
Regex.exec()
성공에 대한 결과를 반환합니다.
배열의 첫 번째 요소 (인덱스 0)는 전체 문자열을 반환 한 후 모든 문자열을 반환합니다. ()
밀폐 된 요소 가이 배열로 밀려납니다.
var string = 'rich-message err-test1 erroractive';
var regex = new RegExp('err-(\S*)', 'ig');
var result = regex.exec(string);
alert(result[0]) --> returns err-test1
alert(result[1]) --> returns test1
다른 팁
당신은 'err- ([^ n r]*)를 시도 할 수 있습니다. 그러나 그것이 문제라고 확신하는 것이 확실합니까? 첫 번째 캡처뿐만 아니라 전체 결과를 사용하고 있습니까?
이후의 물건은 결과 배열에 있어야합니다. 첫 번째 항목은 모든 일치하는 텍스트 (예 : "err-test1")이고 다음 항목은 캡처 괄호 (예 : "test1")의 일치입니다.
myregex = /err-(\S*)/ig;
mymatch = myregex.exec("data with matches in it");
testnum = mymatch[1];
여기에 있습니다 참조 사이트.
제휴하지 않습니다 StackOverflow