이 정규식은 제공되는 샘플 텍스트와 일치 :
/="(.*?)"(?=\s*(?:[a-z]+=|]))/
설명 :
=" '="'
( group and capture to \1:
.*? any character except \n (0 or more times
(matching the least amount possible))
) end of \1
" '"'
(?= look ahead to see if there is:
\s* whitespace (\n, \r, \t, \f, and " ") (0
or more times (matching the most amount
possible))
(?: group, but do not capture:
[a-z]+ any character of: 'a' to 'z' (1 or
more times (matching the most amount
possible))
= '='
| OR
] ']'
) end of grouping
) end of look-ahead
그러나 사용자 오류는 해결하기 어려운이 정규식 예 경우 텍스트 (모든 경우에 작동하지 않을 수 있습니다 =
문자 포함). 사용자 입력이 제대로 이스케이프 처리되는지 확인해야합니다.
"quotes"및 "html tags
" "이 (가)있는'title ="Title은 유효하지 않습니다. 이 따옴표는 \ "quotes \"및 \ "html 태그
\" "'이있는'title ="Title처럼 이스케이프되어야합니다. 그리고 그 경우 정규 표현식이나 비슷한 것으로 lookbehind를 사용할 수 있습니다. –
@GergoErdosi 예, 그들이 유효하지 않다는 것을 알고 있습니다. 사용자가 잘못 사용하면 문제를 바로 잡으려고합니다. 그것은 매우 흔한 실수입니다. – user3213174
HTML 속성 값 내의 모든 인용 부호를 이스케이프하려면 반드시 '"'을 사용해야합니다. 따옴표 자체를 사용하는 것은 프로토콜 위반입니다. 그리고 그들을 피할 수있는 다른 방법은 없습니다. –