2013-10-21 2 views
0

이 정규식을 만드는 데 문제가 있습니다. 다음 패턴과 일치하는 strpos 또는 preg_match가 필요합니다. 00x00. 여기서 '0'은 임의의 숫자이고 x는 대문자 또는 소문자이며 마침표입니다.두 개 이상의 숫자를 일치시키는 정규식, 'x'하나, 두 개 이상의 숫자

숫자에 대해 \ d 할 수 있지만 두 개 이상의 숫자를 지정하는 방법을 모르겠다. 나는 [xX]를 대문자 'x'로 쓸 수 있다는 것을 알고 있으며, 그 기간 동안 길을 잃었다.

preg_match ('/\\d[xX]\\d\./', $string) 

을하지만이 작동하지 않습니다 :

나는 이것을 시도했습니다.

나는 strpos를 사용하는 것을 선호하지만 어느 쪽이든 좋다.

EDIT - 기간은 선택 사항입니다. 방금 보안이 강화되었습니다. 하지만 'x'와 마침표 사이에 몇 개의 숫자가 있는지 모르는 경우에는 일치시킬 수 있는지 확실하지 않습니다.

+0

왜'\\ d'가'\ d'가 아니겠습니까? –

답변

1

다음과 같이 표시됩니다. \d{2,}[Xx]\d{2,}\.은 두 자리 이상의 숫자 (x) (대소 문자 제외)와 두 자릿수 및 마침표와 일치합니다.

모두 일치하려는 경우 앵커 태그를 추가하는 것이 좋습니다 (^\d{2,}[Xx]\d{2,}\.$). 이렇게하면 정규식 엔진이 정확히 일치하도록 지시합니다. `^\d{2,}[Xx]\d{2,}\.$ 다른 단지 000X00 아무것도 일치하지 않습니다 (그래서 내 이전의 예를 들어 실패) :

그래서 짧은에,이 \d{2,}[Xx]\d{2,}\.foo bar 000X00 foo bar 일치하지만이.

+0

빠른 답장을 보내 주셔서 감사합니다. 이걸 진짜 빨리 시험해 볼게. –

+0

@Thom : 천만에. 내 답변에 좀 더 세부 사항을 추가했습니다. 또한, 나는 PHP 녀석이 아니지만 왜 당신은 여분의'\\'가 필요합니까? – npinti

+0

여분의 백 슬래시가 필요하지 않았습니다. JS regexes를보고 혼란스러워했습니다. 두 가지 예 모두 필요에 따라 작동합니다. 도와 주셔서 감사합니다. –

관련 문제