开发者

Regular Expression for matching a phone number

I need a regular expression to match phone numbers. I just want to know if the number is probably a phone number and it could be any phone format, US or international. So I developed a strategy to determine if it matches.

I want it to accept the following characters: 0-9 as well as ,.()- and optionally start with a + (for international numbers). The string should not match if it has any other characters.

I tried this:

/\+?[0-9\/\.\(\)\-]/

But it matches phone numbers that have + in the middle of开发者_JAVA技巧 the number. And it matches numbers that contain alpha chars (I don't want that).

Lastly, I want to set the minimum length to 9 characters.

Any thoughts?

Thanks for any help, I'm obviously not too swift on RegEx stuff :)


Well, you're pretty close. Try this:

^\+?[0-9\/.()-]{9,}$

Without the start and end anchors you allow partial matching, so it can match +123 from the string :-)+123.

If you want a minimum of 9 digits, rather than any characters (so ---.../// isn't valid), you can use:

^\+?[\/.()-]*([0-9][\/.()-]*){9,}$

or, using a lookahead - before matching the string for [0-9/.()-]* the regex engine is looking for (\D*\d){9}, which is a of 9 digits, each digit possibly preceded by other characters (which we will validate later).

^\+?(?=(\D*\d){9})[0-9\/.()-]*$


The reason why it matches alpha character is because of the period. You have to escape it. I don't know what editor you are using for this, this is what I'll use for VIM:

^+\?[()\-\.]\?\([0-9][\.()\-]\?\)\{3,\}$


The juqeury has a plugin for US phone validation. Check this link. You can also see the regular expression in the source code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜