手機號碼格式Regex
匹配國內電話號碼:d{3}-d{8} ¦d{4}-d{7}
評註:匹配形式如 0511-4405222 或 021-87888822
前端代碼我使用jquery.validate.js,代碼如下:
JavaScript代碼
<script type="text/css教程">
$(document).ready(function() {
$("#smForm").validate({
rules: {
smMobilePhone: {
required: true,
digits:true,
range:[13000000000,18999999999]
}
},
messages: {
smMobilePhone: {
required: "您沒有填寫手機號碼",
digits: "手機號碼格式不對",
range: "手機號長度或者格式不對",
}
},
preErrs : {
}
});
});
</script>
這隻是一個不精確的驗證,只能大概驗證到一個範圍而已,所以重點還在後面。
PHP代碼
$mobilephone=trim($_POST["smMobilePhone"]);
//手機號碼的正則驗證
if(preg_match("/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/",$mobilephone)){
//驗證通過
}else{
//手機號碼格式不對
}
看執行個體
<?php教程
//Regex
$tel = "15551530459";//作者的手機號碼,如果有疑問可以電話聯絡我,我的郵箱是admin@www.3ppt.com
if(strlen($tel) == "11")
{
//上面部分判斷長度是不是11位
$n = preg_match_all("/13[123569]{1}d{8}|15[1235689]d{8}|188d{8}/",$tel,$array);
/*接下來的Regex("/131,132,133,135,136,139開頭隨後跟著任意的8為數字 '|'(或者的意思)
* 151,152,153,156,158.159開頭的跟著任意的8為數字
* 或者是188開頭的再跟著任意的8為數字,匹配其中的任意一組就通過了
* /")*/
var_dump($array); //看看是不是找到了,如果找到了,就會輸出電話號碼的
}else
{
echo "長度必須是11位";
}
/*
* 雖然看起來複雜點,清楚理解!
* 如果有更好的,可以貼出來,分享快樂!
* */
?>
其它參考
匹配騰訊QQ號:[1-9][0-9]{4,}
評註:騰訊QQ號從10000開始
匹配中國郵遞區號:[1-9]d{5}(?!d)
評註:中國郵遞區號為6位元字
匹配身份證:d{15} ¦d{18}
評註:中國的身份證為15位或18位
匹配ip地址:d+.d+.d+.d+
評註:提取ip地址時有用
匹配特定數字:
^[1-9]d*$ //匹配正整數
^-[1-9]d*$ //匹配負整數
^-?[1-9]d*$ //匹配整數
^[1-9]d* ¦0$ //匹配非負整數(正整數 + 0)
^-[1-9]d* ¦0$ //匹配非正整數(負整數 + 0)
^[1-9]d*.d* ¦0.d*[1-9]d*$ //匹配正浮點數
^-([1-9]d*.d* ¦0.d*[1-9]d*)$ //匹配負浮點數
^-?([1-9]d*.d* ¦0.d*[1-9]d* ¦0?.0+ ¦0)$ //匹配浮點數
^[1-9]d*.d* ¦0.d*[1-9]d* ¦0?.0+ ¦0$ //匹配非負浮點數(正浮點數 + 0)
^(-([1-9]d*.d* ¦0.d*[1-9]d*)) ¦0?.0+ ¦0$ //匹配非正浮點數(負浮點數 + 0)
評註:處理大量資料時有用,具體應用時注意修正
匹配特定字串:
^[A-Za-z]+$ //匹配由26個英文字母組成的字串
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字串
^[a-z]+$ //匹配由26個英文字母的小寫組成的字串
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字串
^w+$ //匹配由數字、26個英文字母或者底線組成的字串
評註:最基本也是最常用的一些運算式