摘要:和均為非負整數,其中。如果之前至少個獲取的子表達式,則為后向引用。
注:本文轉自 摘取天上星的博客
PHP常用正則表達式
"^d+$" //非負整數(正整數+ 0) "^[0-9]*[1-9][0-9]*$" //正整數 "^((-d+)|(0+))$" //非正整數(負整數+ 0) "^-[0-9]*[1-9][0-9]*$" //負整數 "^-?d+$" //整數 "^d+(.d+)?$" //非負浮點數(正浮點數+ 0) "^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數 "^((-d+(.d+)?)|(0+(.0+)?))$" //非正浮點數(負浮點數+ 0) "^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數 "^(-?d+)(.d+)?$" //浮點數 "^[A-Za-z]+$" //由26個英文字母組成的字符串 "^[A-Z]+$" //由26個英文字母的大寫組成的字符串 "^[a-z]+$" //由26個英文字母的小寫組成的字符串 "^[A-Za-z0-9]+$" //由數字和26個英文字母組成的字符串 "^w+$" //由數字、26個英文字母或者下劃線組成的字符串 "^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$" //email地址 "^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$" //url /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ //月/日/年 "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil /^((+?[0-9]{2,4}-[0-9]{3,4}-)|([0-9]{3,4}-))?([0-9]{7,8})(-[0-9]+)?$/ //電話號碼 "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址
匹配中文字符的正則表達式:[u4e00-u9fa5]
匹配雙字節字符(包括漢字在內):[^x00-xff]
匹配空行的正則表達式:n[s| ]*r
匹配HTML標記的正則表達式:/<(.)>.< /1>|<(.*) />/
匹配首尾空格的正則表達式:(^s)|(s$)
匹配Email地址的正則表達式:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*
匹配網址URL的正則表達式:^[a-zA- z]+://(w+(-w+))(.(w+(-w+)))(?S)?$
匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^a-zA-Z{4,15}$
匹配國內電話號碼:(d{3}-| d{4}-)?(d{8}|d{7})?
匹配騰訊QQ號:^[1-9]1-9$
元字符及其在正則表達式上下文中的行為:
將下一個字符標記為一個特殊字符、或一個原義字符、或一個后向引用、或一個八進制轉義符。
^匹配輸入字符串的開始位置。如果設置了RegExp對象的Multiline屬性,^也匹配’n’或’r’之后的位置。
$匹配輸入字符串的結束位置。如果設置了RegExp對象的Multiline屬性,$也匹配’n’或’r’之前的位置。
*匹配前面的子表達式零次或多次。
+匹配前面的子表達式一次或多次。+等價于{1,}。
?匹配前面的子表達式零次或一次。?等價于{0,1}。
{n} n是一個非負整數,匹配確定的n次。
{n,} n是一個非負整數,至少匹配n次。
{n,m} m和n均為非負整數,其中n <= m。最少匹配n次且最多匹配m次。在逗號和兩個數之間不能有空格。
?當該字符緊跟在任何一個其他限制符(*, +, ?, {n}, {n,}, {n,m})后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹
配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。
.匹配除"n"之外的任何單個字符。要匹配包括’n’在內的任何字符,請使用象’[.n]’的模式。
(pattern)匹配pattern并獲取這一匹配。
(?:pattern)匹配pattern但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。
(?=pattern)正向預查,在任何匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要
獲取供以后使用。
(?!pattern)負向預查,與(?=pattern)作用相反
x|y匹配x或y。
[xyz]字符集合。
[^xyz]負值字符集合。
[a-z]字符范圍,匹配指定范圍內的任意字符。
[^a-z]負值字符范圍,匹配任何不在指定范圍內的任意字符。
b匹配一個單詞邊界,也就是指單詞和空格間的位置。
B匹配非單詞邊界。
cx匹配由x指明的控制字符。
d匹配一個數字字符。等價于[0-9]。
D匹配一個非數字字符。等價于[^0-9]。
f匹配一個換頁符。等價于x0c和cL。
n匹配一個換行符。等價于x0a和cJ。
r匹配一個回車符。等價于x0d和cM。
s匹配任何空白字符,包括空格、制表符、換頁符等等。等價于[ fnrtv]。
S匹配任何非空白字符。等價于[^ f v]。
t匹配一個制表符。等價于x09和cI。
v匹配一個垂直制表符。等價于x0b和cK。
w匹配包括下劃線的任何單詞字符。等價于’[A-Za-z0-9_]’。
W匹配任何非單詞字符。等價于’[^A-Za-z0-9_]’。
xn匹配n,其中n為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。
num匹配num,其中num是一個正整數。對所獲取的匹配的引用。
n標識一個八進制轉義值或一個后向引用。如果n之前至少n個獲取的子表達式,則n為后向引用。否則,如果n為八進制數字(0-7),則n為一個八進制轉義值。
nm標識一個八進制轉義值或一個后向引用。如果nm之前至少有is preceded by at least nm個獲取得子表達式,則nm為后向引用。如果nm之前至少有n個獲取,則n為一個后跟文字m的后向引用。如果前面的條件都不滿足,若n和m均為八進制數字(0-7),則nm將匹配八進制轉義值nm。
nml如果n為八進制數字(0-3),且m和l均為八進制數字(0-7),則匹配八進制轉義值nml。
un匹配n,其中n是一個用四個十六進制數字表示的Unicode字符。
匹配中文字符的正則表達式:[u4e00-u9fa5]
匹配雙字節字符(包括漢字在內):[^x00-xff]
匹配空行的正則表達式:n[s| ]*r
匹配HTML標記的正則表達式:/<(.)>.1>|<(.*) />/
匹配首尾空格的正則表達式:(^s)| (s$)
匹配Email地址的正則表達式:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*
匹配網址URL的正則表達式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
利用正則表達式限制網頁表單里的文本框輸入內容:
用正則表達式限制只能輸入中文:
onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,"")" onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^u4E00-u9FA5]/g,""))"
用正則表達式限制只能輸入全角字符:
onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,"")" onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^uFF00-uFFFF]/g,""))"
用正則表達式限制只能輸入數字:
("text",clipboardData.getData("text").replace(/[^d]/g,""))"
用正則表達式限制只能輸入數字和英文:
onkeyup="value=value.replace(/[W]/g,"") "onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^d]/g,""))"
常用正則式
匹配中文字符的正則表達式:[u4e00-u9fa5]
匹配雙字節字符(包括漢字在內):[^x00-xff]
匹配空行的正則表達式:n[s| ]*r
匹配HTML標記的正則表達式:/<(.)>.1>|<(.*) />/
匹配首尾空格的正則表達式:(^s)|(s$)
匹配IP地址的正則表達式:/(d+).(d+).(d+).(d+)/g //
匹配Email地址的正則表達式:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*
匹配網址URL的正則表達式:http://(/[w-]+.)+[w-]+(/[w- ./?%&=]*)?
sql語句:^(select|drop|delete|create|update|insert).*$
1、非負整數:^d+$
2、正整數:^[0-9]1-9$
3、非正整數:^((-d+)|(0+))$
4、負整數:^-[0-9]1-9$
5、整數:^-?d+$
6、非負浮點數:^d+(. d+)?$
7、正浮點數:^((0-9)+.[0-9]1-9)|([0-9]1-9. [0-9]+)|([0-9]1-9))$
8、非正浮點數:^((-d+.d+)?)|(0+ (.0+)?))$
9、負浮點數:^(-((正浮點數正則式)))$
10、英文字符串:^[A-Za-z]+$
11、英文大寫串:^[A-Z]+$
12、英文小寫串:^[a-z]+$
13、英文字符數字串:^[A-Za- z0-9]+$
14、英數字加下劃線串:^w+$
15、E-mail地址:^[w-]+(. [w-]+)*@[w-]+(.[w-]+)+$
16、URL:^[a-zA-Z]+://(w+(-w+))(. (w+(-w+)))(?s)?$
或:
^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/= ?%-&_~`@[]":+!]*([^<>""])*$
17、郵政編碼:^[1-9]d{5}$
18、中文:^[u0391-uFFE5]+$
19、電話號碼:^((d2,3)|(d{3}-))?(0d2,3|0d{2,3}-)?[1-9]d{6,7}(-d{1,4})?$
20、手機號碼:^(( (d{2,3}))|(d{3}-))?13d{9}$
21、雙字節字符(包括漢字在內):^x00-xff
22、匹配首尾空格:(^s)|(s$)(像vbscript那樣的trim函數)
23、匹配HTML標記:< (.)>.1>|<(.*) />
24、匹配空行:n[s| ]*r
25、提取信息中的網絡鏈接:(h|H)(r|R)(e|E)(f|F) = ("|")?(w||/|.)+("|"| *|>)?
26、提取信息中的郵件地址:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*
27、提取信息中的圖片鏈接:(s|S)(r|R)(c|C) = ("|")?(w||/|.)+("|"| *|>)?
28、提取信息中的IP地址:(d+).(d+).(d+).(d+)
29、提取信息中的中國手機號碼:(86)013d{9}
30、提取信息中的中國固定電話號碼:(d3,4|d{3,4}-|s)?d{8}
31、提取信息中的中國電話號碼(包括移動和固定電話):(d3,4|d{3,4}-|s)?d{7,14}
32、提取信息中的中國郵政編碼:[1-9] {1}(d+){5}
33、提取信息中的浮點數(即小數):(-?d*).?d+
34、提取信息中的任何數字:(-?d*)(.d+)?
35、IP:(d+).(d+).(d+).(d+)
36、電話區號:/^0d{2,3}$/
37、騰訊QQ號:^[1-9]1-9$
38、帳號(字母開頭,允許5-16字節,允許字母數字下劃線):^a-zA-Z{4,15}$
39、中文、英文、數字及下劃線:^[u4e00-u9fa5_a-zA-Z0-9]+$
40、漢字、英文、數字、下劃線、短連接 - 在UTF8和GB2312下的不同提取方式(例子如下):
function getChinaEnglishNumStrlen($str,$charset="utf8"){ if($charset=="gb2312"){ if(!preg_match_all("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_-]+/",$str,$match)){ return false; } return implode("",$match[0]); } // if($charset=="utf8"){ if(!preg_match_all("/[x{4e00}-x{9fa5}A-Za-z0-9_-]+/u",$str,$match)){ return false; } return implode("",$match[0]); } return false; }
以上函數返回提取出來的漢字字母數字_-符號 字符串組合
41、過濾掉特殊字符,只保留字符串中文、英文字母、數字、下劃線、中劃線
注意:下面的方法,只保留字符串中文、英文字母、數字、下劃線、中劃線,其他符號都被過濾掉,如果字符串為utf-8,則下面的就不需要轉碼,可以注釋掉里邊的mb_convert_encoding方法。
/** * 過濾特殊字符(只保留中文、英文字母、數字、下劃線、中劃線) * @desc 本方法主要用來過濾一些灌水發廣告里邊含有特殊符存在的敏感詞的內容 * @param string $str 待處理的字符(gbk碼) * @return string */ function filter_special_characters($str) { if(empty($str)) return ""; // 將gbk轉為utf-8碼 $str = mb_convert_encoding($str, "utf-8", "gbk"); // 過濾后的字符串 $new_str = ""; // 正則匹配 if(preg_match_all("/[x{4e00}-x{9fa5}A-Za-z0-9_-]+/u", $str , $match)) { if($match[0]) { foreach($match[0] as $val) { $new_str .= $val; } // 轉碼為gbk輸出 $new_str = mb_convert_encoding($new_str , "gbk", "utf-8"); } } return $new_str; } // 調用方法測試過濾垃圾廣告中的特殊符 $str = "紅塵一場夢 啦啦+Q【1⒐6⒉4⒊⒐】★信譽第一"; $new_str = filter_special_characters($str); print_r($new_str); // 打印輸出 // 紅塵一場夢啦啦Q164信譽第一
42、preg_match結合正則使用
preg_match() 匹配成功一次后就會停止匹配,如果要實現全部結果的匹配,則需使用 preg_match_all() 函數。
preg_match (pattern , subject, matches)
示例1-查找字母:
輸出: A match was found.
示例2-匹配字符串中的url超鏈接
preg_match()[PHP] 進行正則表達式匹配
適用版本:5
示例3-使用正則表達式匹配中文
$str = "preg_match正則匹配中文123"; // 正則表達式匹配中文(UTF8編碼) if(preg_match("/[x{4e00}-x{9fa5}]+/u",$str)){ echo "匹配"; }else{ echo "沒有匹配"; } // 正則表達式匹配中文(GB2312,GBK編碼) preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str);
根據貨號匹配相關數據:
define("runcode", 1); $sku = "顏色分類:A722287962 棕色;尺碼:XXL;情侶款:男款"; // 中文用正則匹配 $pattern = "/[x{4e00}-x{9fa5}]+[:|;|;|s]([A-Za-z0-9_-]+)s*(.*)?[:|;|;|s]+[x{4e00}-x{9fa5}]+[:|;|;|s]([A-Za-z0-9]+)/u"; if(preg_match($pattern, $sku, $matches)) { dump($matches); }
打印結果:
Array ( [0] => 顏色分類:A722287962 棕色;尺碼:XXL [1] => A722287962 [2] => 棕色 [3] => XXL )
preg_match用法講解
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31954.html
摘要:一正則表達式函數解析表單驗證等地址的合法性匹配結果可以看作是值非法詞的過濾二正則表達式基本語法測試正則表達式的工具中午匹配最好轉成轉換工具注意是必須在一起的,否則如下也被當成一個原子去匹配。 一、PHP正則表達式函數解析 showImg(https://segmentfault.com/img/bVThUH?w=638&h=95); showImg(https://segmentfau...
摘要:是決定正則表達式匹配規則的主要部分。二分隔符分隔符的選擇當使用函數的時候,正則表達式必須由分隔符閉合包裹。果分隔符經常在正則表達式內出現,最好使用其他分隔符來提高可讀性。需要將一個字符串放入正則表達式中使用時,可以用函數對其進行轉義。 一、簡介 1. 什么是正則表達式 正則表達式(Regular Expression)就是用某種模式去匹配一類字符串的一種公式。正則表達式使用單個字符串來...
摘要:二常用字符串對象方法檢索與正則表達式相匹配的值,返回中第一個與相匹配的子串的起始位置,如果沒有找到返回方法不執行全局匹配,它將忽略標志。找到一個或多個正則表達式的匹配,返回匹配的字符串數組。替換與正則表達式匹配的子串。 作者:心葉時間:2018-04-28 09:33 一:常用正則對象方法 RegExpObject.exec(string) 檢索字符串中指定的值,如果匹配到,返回格式...
閱讀 2855·2021-10-14 09:42
閱讀 3173·2019-08-30 15:52
閱讀 3237·2019-08-30 14:02
閱讀 1101·2019-08-29 15:42
閱讀 528·2019-08-29 13:20
閱讀 1156·2019-08-29 12:24
閱讀 469·2019-08-26 10:20
閱讀 680·2019-08-23 18:31