2012-11-06 5 views
-1

이 코드 스 니펫은 codeigniter에서 가져온 것으로, 숫자 문자와 대시가 가능한 새로운 함수로 복사하려고합니다. 대시와 괄호를 허용하려면이 정규식에 무엇을 추가해야합니까?이 정규식에 대시를 포함하는 방법

preg_match('/^[\-+]?[0-9]*\.?[0-9]+$/', $str); 
+0

는 문자 클래스에 추가? * [오픈 소스 RegexBuddy 대안] (http://stackoverflow.com/questions/89718/is-there) 및 [온라인 정규식 테스트] (http://stackoverflow.com/questions/32282/regex-testing)도 참조하십시오. 몇 가지 유용한 도구 또는 더 나은 튜토리얼을위한 [RegExp.info] (http://regular-expressions.info/). – mario

답변

1
preg_match('/^\+?[-0-9]*\.?[-0-9]+$/', $str); 

갱신 :

preg_match('/^\+?[-0-9()]*\.?[-0-9()]+$/', $str); 
+0

괄호를 허용하도록 질문을 업데이트했습니다. 답변을 업데이트 할 수 있습니까? – Catfish

+0

업데이트 됨. 어떤 곳에서 괄호 안에 있어야하는지 잘 모르겠지만,'$ str'의 몇 가지 예는 흔들릴 것입니다. – nkamm

+0

사용자가 '555-555-5555'또는 '(555) 555-555'등 여러 형식으로 전화 번호를 입력 할 수있게하려고합니다. – Catfish

2

귀하의 정규 표현식이 의미 가와 라인을 시작 - 또는 + 그럼 어쩌면 다음 0-9 0 번 이상 . MAYBE 다음 번호 중 최소한 하나만 사용하십시오. 0-9

RegEx에서 수행 할 작업을 지정해야 올바른 RegEx를 작성할 수 있습니다.

여기 당신은 이동 편집 :

<?php 

// 555-555-5555 or (555) 555-5555 or (555)555-5555 
$str = '555-555-5555'; 
if (preg_match('/^((\([0-9]{3}\)) ?|[0-9]{3}-)[0-9]{3}-[0-9]{4}$/', $str) == 1){ 
    echo 'Yes!'; 
}else{ 
    echo 'No!'; 
} 
?> 
+0

질문에 게시 된 코드는 form_validation 클래스의 codeigniter 함수 "Numeric"에서 직접 가져 왔습니다. 방금 대시와 괄호를 추가하여 허용되도록했습니다. – Catfish

+0

@Catfish, 올바른 답변으로'+ - -) (0'은 누군가의 전화 번호처럼 보입니까? – keyboardSmasher

+0

데이터베이스에 입력 할 숫자를 제외하기 때문에 응용 프로그램에서는 괜찮습니다. 다양한 형식을 입력하십시오. – Catfish

관련 문제