정규식을 사용하여 문자열의 패턴을 확인하려고합니다. 내 요구 사항은
%
또는 (%
임의의 숫자도 마찬가지 번호와 반대를가 있어야 선행되어야한다 %
항상%
(
)
and
or
숫자 값만 포함 할 수 있습니다.Valid string (%1 and %2 or %3)
Invalid %%1
나는 다음을 시도했다
regex ^[%(]+[%0-9]+[(]
도와주세요
이렇게해야합니다.
^(?:\(|%[0-9]+)(?:\s+|%[0-9]+|and|or|\(|\))*$
여는 괄호 또는 퍼센트로 시작하여 일련의 숫자로 시작한 다음 계속해서 공백 또는 퍼센트 다음에 일련의 숫자를 여러 번 허용합니다. 당신이 일치시키려는 것에 대한 더 구체적인 예를 제공한다면 더 구체적 일 수 있습니다
이것은 일치하는 대괄호를 강제하지 않습니다. 이를 위해 재귀 js 함수가 필요합니다.
편집하다
자, 구분자 주위의 간격과 숫자를 설명하는 더 구체적인 함수가 있습니다.
^(?:\(|%[0-9])(?:\sand\s|\sor\s|\(+)(?:(?:%[0-9]|\)+)(?:\s(?:and|or)\s(?:%[0-9]|(?:\(\s?)+))?)*\s?\)*$
이것은 다음과 같이 일치합니다 : % 3 및 % 4 또는 (% 2 또는 % 3) 시도 할 때 실패합니다 : % 3 및 % 4 또는 (% 2 또는 % 3) % 4와 또는
다시 말하지만, 대괄호는 닫을 필요가 없으므로 일치 : % 3 및 % 4 또는 (% 2 또는 % 3 및 일치 : % 3 및 % 4 또는 (% 2 또는 % 3))))
다음과 같이 즉시 중첩 된 대괄호를 처리 할 수 있습니다 : % 3 및 % 4 또는 ((% 2 또는 % 3) 및 % 9)
누락 된 사례가 있습니다. 어떤 문제가 발생했는지 알려주세요.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다