2014-04-20 3 views
1

PHP에서 preg_match와 정규 표현식을 사용하여 "+44"또는 "0"으로 시작하는 문자열을 확인하고 싶습니다. 그러나 +와 일치하는 것으로 읽히지 않고 어떻게 할 수 있습니까? 선행 문자 한 번 이상? 겠습니까 (+44 | 0)?+ 정규 표현식의 기호 PHP

+1

이스케이프하려면 백 슬래시를 사용하십시오. '(\ +44 | 0)' – Pietu1998

+1

이중 백 슬래시. PHP 자체는 정규 표현식의 의미를 알지 못하므로 정규 표현식의 백 슬래시를 다시 이스케이프해야하는 문자열로 전달해야합니다. – Wormbo

+0

[** Related ... **] (http://stackoverflow.com/questions/399078/what-special-characters-must-be-escaped-in-regular-expressions) – HamZa

답변

2

당신은 그것을 여러 가지 방법으로 할 수 있습니다. (다시 즉 슬래시.)

하나는 이스케이프 문자로 +을 탈출한다

^(\+44|0) 

또는 그 문자 적 ​​의미의대로 문자를 의미하는 문자 클래스 [] 내부의 +을 배치 : 그 사이에 나는 두 가지를 알고있다.

^([+]44|0) 

^

는 플래그 (수정)를 기반으로 문자열/라인의 시작을 의미하는 앵커 문자입니다.

3

백 슬래시는 정규 표현식의 기본 이스케이프 문자입니다. PHP 문자열에서 사용되는 경우 백 슬래시 자체를 이스케이프 처리해야 할 수도 있으므로 "(\\+44|0)"과 같은 문자열을 상수로 사용하십시오. 그러면 정규 표현식 자체는 (\+44|0)이됩니다.

4

은 + 문자를 이스케이프하려면 ^으로 시작하고 백 슬래시로 \를 사용하십시오.

$regexp = '^\+44 | ^0'; 
: 그래서 당신은 문자열에서 정규 표현식을 저장하기 위해, PHP에서

^\+44 | ^0 

를 확인합니다, 당신은 대신 같은 작은 따옴표를 사용하여 물건을 혼동 백 슬래시 \을 두 배로 할 필요가 없습니다

사실, 당신도이 작품도, 아무것도를 사용할 필요가 없습니다 :

$regexp = "^\+44 | ^0"; 
+1

패턴, 그리고 그것이 괄호가 없다면 그것을 분리하지 않을까 걱정이다, 나는 \\ 방법을 사용하기로 결정했지만 나에게 이것도 가르쳐 주셔서 감사합니다 :) – RJE95

+0

당신은 환영합니다. –