2011-11-07 14 views
5

मुझे अल्पविराम से अलग संख्यात्मक मानों को सत्यापित करने के लिए नियमित अभिव्यक्ति बनाने की आवश्यकता है।संख्याओं और अल्पविरामों के लिए PHP नियमित अभिव्यक्ति केवल

वे तरह दिखना चाहिए: 1,2,3,4,5 आदि ....

मान होना चाहिए या तो की तरह एक एकल अंक: पहले या बाद में 1 कोई खाली स्थान, कोई अल्पविराम के पहले या बाद में ।

या ... कई संख्यात्मक मान अल्पविराम से अलग होते हैं। पहले और अंतिम अक्षर एक संख्या होना चाहिए।

मैं निम्नलिखित कोड लेकिन यह केवल किसी विशेष क्रम में संख्या और अल्पविराम के लिए चेक:

मैं कैसे नियमित अभिव्यक्ति नीचे बदलने उपरोक्त विवरण फिट करने के लिए कर सकते हैं?

धन्यवाद!

// get posted value 
if(isset($_POST['posted_value'])) 
{ 
    $sent_value = mysqli_real_escape_string($conn, trim($_POST['posted_value'])); 
    if(preg_match('/^[0-9,]+$/', $posted_value)) 
    { 
     $what_i_need = $posted_value; 
    } 
    else 
    { 
     $msg .= $not_what_i_need; 
    } 
} 
else 
{ 
    $msg .= $posted_value_not_set; 
} 
+0

संपादन के लिए एक कारण देने के लिए, आप [यह] (http://en.wikipedia.org/wiki/Coma) कह रहे थे जब आप [यह] (http: //en.wikipedia .org/wiki/अल्पविराम)। – darvids0n

उत्तर

28

यह करना चाहिए:

/^\d(?:,\d)*$/ 

स्पष्टीकरण:

/   # delimiter 
^  # match the beginning of the string 
    \d   # match a digit 
    (?:  # open a non-capturing group 
     ,  # match a comma 
     \d  # match a digit 
    )  # close the group 
    *  # match the previous group zero or more times 
    $   # match the end of the string 
/   # delimiter 

आप मल्टी-अंकों की संख्या है, तो \d+ करने के लिए \d बदलने की अनुमति देते हैं।

2

क्या आप उपयोगकर्ता को उदाहरण के लिए 5,000 जैसे अल्पविरामों के साथ संख्या इनपुट करने की अनुमति देते हैं? 5.6 जैसे दशमलव के बारे में क्या?

वैकल्पिक रूप से आप इस तरह कुछ विस्फोट का उपयोग कर इनपुट को मान्य कर सकते हैं।

$values = explode(',',$sent_value); 
$valid = true; 

foreach($values as $value) { 
    if(!ctype_digit($value)) { 
     $valid = false; 
     break; 
    } 
} 
संबंधित मुद्दे