preg_match: number-alphabets and commas only

前端 未结 3 945
暖寄归人
暖寄归人 2020-12-30 12:19

How do I write a regular expression which matches number-alphabets and commas only?

I came out with this one below but it doesnt work - it accepts other punctuation

相关标签:
3条回答
  • 2020-12-30 12:48

    Well this adds a couple more characters like underscore

    /^[\w,]*$/
    

    But this should work

    /^[a-zA-Z0-9,]*$/
    
    0 讨论(0)
  • 2020-12-30 12:52
    if(preg_match('/^[0-9a-z,]+$/i', $cst_value)) {
      // valid input..contains only alphabet,number and comma.
    }else{
      // invalid
    }
    

    We pass the following to preg_match : /^[0-9a-z,]+$/i

    Explanation:

    • / : regex delimiters.
    • ^ : start anchor
    • [..] : Char class
    • 0-9 : any digit
    • a-z : any alphabet
    • , : a comma. comma is not a regex metachar, so you need not escape it
    • + : quantifier for one or more. If an empty input is considered valid, change + to *
    • $ : end anchor
    • i : to make the matching case insensitive.
    0 讨论(0)
  • 2020-12-30 12:56

    You want:

    /^[a-zA-Z0-9,]+$/
    

    You need the start ^ and end $ of string anchors. Without them the regex engine will look for any of those characters in the string and if it finds one, it will call it a day and say there's a match. With the anchors, it forces the engine to look at the whole string. Basically:

    • /[a-zA-Z0-9,]+/ matches if any of the characters are alphanumeric + comma.
    • /^[a-zA-Z0-9,]+$/ matches if all of the characters are alphanumeric + comma.
    0 讨论(0)
提交回复
热议问题