programing

정규식 옵션 문자를 일치시키는 방법

oldcodes 2023. 5. 24. 22:21
반응형

정규식 옵션 문자를 일치시키는 방법

나는 지금까지 제대로 작동하고 있다고 생각했던 레식이 있습니다.선택 가능한 문자와 일치해야 합니다.있을 수도 있고 아닐 수도 있습니다.

여기 두 줄이 있습니다.위쪽 문자열은 일치하지만 아래쪽 문자열은 일치하지 않습니다.하위 문자열에 문자가 하나도 없기 때문에 오류가 발생합니다.

처음 5자리 숫자 뒤에 한 글자가 있으면 받고, 없으면 나머지 문자열을 계속 받고 싶습니다.이 편지는 다음과 같습니다.A-Z.

제거할 경우([A-Z]{1}) +.*? +정규식부터, 편지를 제외하고 제가 필요한 모든 것과 일치할 것이지만, 그것은 약간 중요합니다.

20000      K               Q511195DREWBT            E00078748521
30000                      K601220PLOPOH            Z00054878524

여기 제가 사용하고 있는 레식이 있습니다.

/^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/

사용하다

[A-Z]?

문자를 선택할 수 있습니다. {1}중복됩니다. (물론 당신은 또한 쓸 수 있습니다.[A-Z]{0,1}그것은 같은 의미일 것이지만, 그것이 바로 그것입니다.?를 위한 것입니다.)

당신은 당신의 정규식을 개선할 수 있습니다.

^([0-9]{5})+\s+([A-Z]?)\s+([A-Z])([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})

그리고, 대부분의 정규식 방언들에서,\d와 동일합니다.[0-9]:

^(\d{5})+\s+([A-Z]?)\s+([A-Z])(\d{3})(\d{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])\d{3}(\d{4})(\d{2})(\d{2})

그러나: 11개의 개별 캡처 그룹이 필요합니까?그리고 만약 그렇다면, 네 번째부터 마지막까지 숫자 그룹을 캡처하는 것은 어떨까요?

다음 문자를 추가하여 단일 문자를 선택적으로 만들 수 있습니다.?뒤에 다음과 같이 표시:

([A-Z]{1}?)

정량자{1}중복되므로 삭제할 수 있습니다.

단일 문자를 선택 사항으로 표시해야 합니다.

([A-Z]{1})? +.*? +

또는 전체 부분을 선택적으로 만듭니다.

(([A-Z]{1}) +.*? +)?

당신은 또한 당신의 경우를 위해 설계된 더 단순한 정규식을 사용할 수 있습니다.(.*)\/(([^\?\n\r])*)어디에$2당신이 원하는 것과 일치합니다.

여기에는 숫자와 소문자 및 대문자와 선택적 특수 문자를 포함하여 최소 8자의 문자가 필요한 암호에 대한 정규식이 있습니다.

/(?=.\d)(?=.[a-z])(?=).*[A-Z])(?[~@#$%^&*_-+=`|{}:;!.?"()[]]).{8,25})/

/((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?![~@#\$%\^&\*_\-\+=`|{}:;!\.\?\"()\[\]]).{8,25})/

언급URL : https://stackoverflow.com/questions/4007302/regex-how-to-match-an-optional-character

반응형