2013-02-08 8 views

답변

3

정규 표현식 '/^./'은 문자열 시작 부분의 모든 문자와 일치합니다.

  • dot(.)newline 문자를 제외한 모든 문자와 일치하고,
  • caret(^)는 시작 부분에 일치하는 데 사용됩니다.

따라서 preg_replace은 시작 부분의 문자를 빈 문자열로 바꿉니다. 따라서 .을 바꾼 후에 ...555.55..555.55이됩니다.

처음부터 모두 dots(.)을 바꾸려면 정규식에서 .을 탈출해야합니다. .을 단순히 사용하면 어떤 문자와도 일치합니다. 또한 dots(.)을 바꾸려면 일부 한정 기호 -또는 +을 사용해야합니다.

그래서, 당신의 정규식은 다음과 같습니다

preg_replace('/^[.]+/', '', $price); 

나 :

preg_replace('/^\.+/', '', $price); 
+0

을 내가 먼저 교체하려는 경우 그 ............에만 첫번째 charater를 교체하는 방법 3 char na ........ –

+0

'^ .' regex는 처음에 한 문자 만 찾습니다. 수량 한정 기호를 사용하지 않았으므로 그래서 첫 번째 문자를 대체합니다. –

+0

@Malai .. 처음에는 모든 도트를 바꾸고 싶은 것처럼 보입니다.', 점과 일치시킵니다. 그래서 당신의 정규식은 다음과 같습니다 : -'/^[.]++/','' "'로 대체하십시오. '/^./'만 사용할 때,'.'는 어떤 것과도 매치하기 때문에 처음부터'X'를 대체합니다. 'dot (,)'만 바꾸려면 이스케이프하거나 문자 클래스를 사용할 수 있습니다. –

1

/^./ 문자열의 시작 후 첫 번째 문자와 일치합니다.

  • //은 정규식으로 구분됩니다.
  • ^은 줄 바꿈이없는 한
  • .과 일치합니다.

일치하는 항목은 빈 문자열 ('')로 대체됩니다. 처음 세 문자를 바꾸려면

: 당신은 문자열의 시작에 모든 점을 바꾸려면

$price = preg_replace('/^.{3}/', '', $price); 

을, 당신이 그들을 탈출 "을 의미한다 (+을 한정 기호를 적용하거나 필요) "더 :

$price = preg_replace('/^\.+/', '', $price); 

더 적합 할 수 있습니다 문자열의 시작()에서 모든 비 숫자를 바꾸려면 :

$price = preg_replace('/^\D+/', '', $price);