日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实用正则表达式(实用篇)

發布時間:2025/3/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实用正则表达式(实用篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
好久沒寫博客,這次寫博客主要是針對所學的正則表達式做一個整理.因為用時總是不大把握,每次都得百度,因此將常用的一些正則以及一些比較難記混淆 的字符紀錄于此,本篇并不是正則的使用教程,只是一些常用的字符及常用的正則,權當一個工具書使用.當然如果能夠解決一些朋友的燃眉之需,那應該是一件非 常令人高興的事了.本文內容大都摘自其他博客,如有侵權,請指明更正.(HOHO,排版排得好累...)
常用的元字符有
.匹配除換行符以外的任意字符
\w?匹配字母或數字或下劃線或漢字
\s?匹配任意的空白符
\d匹配數字
\b匹配單詞的開始或結束
^匹配字符串的開始
$匹配字符串的結束
常用的限定符
*重復零次或更多次
+重復一次或更多次
?重復零次或一次
{n}重復n次
{n,}重復n次或更多次
{n,m}重復n到m次
常用的反義字符
\W匹配任意不是字母,數字,下劃線,漢字的字符
\S匹配任意不是空白符的字符
\D匹配任意非數字的字符
\B匹配不是單詞開頭或結束的位置
[^x]匹配除了x以外的任意字符
貪婪與懶惰限定符
*?重復任意次,但盡可能少重復
+?重復1次或更多次,但盡可能少重復
??重復0次或1次,但盡可能少重復
{n,m}?重復n到m次,但盡可能少重復
{n,}?重復n次以上,但盡可能少重復
使用小括號()時的一些特殊語法
(exp)匹配exp,并捕獲文本到自動命名的組里
(?<name>exp)?匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)
(?:exp)匹配exp,不捕獲匹配的文本,也不給此分組分配組號
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
(?#comment)這種類型的組不對正則表達式的處理產生任何影響,用于提供注釋讓人閱讀
一些不是很經常使用的字符
\a報警字符(打印它的效果是電腦嘀一聲)
\b?通常是單詞分界位置,但如果在字符類里使用代表退格
\t制表符,Tab
\r回車
\v豎向制表符
\f換頁符
\n換行符
\eEscape
\0nnASCII代碼中八進制代碼為nn的字符
\xnnASCII代碼中十六進制代碼為nn的字符
\unnnnUnicode代碼中十六進制代碼為nnnn的字符
\cNASCII控制字符。比如\cC代表Ctrl+C
\A字符串開頭(類似^,但不受處理多行選項的影響)
\Z字符串結尾或行尾(不受處理多行選項的影響)
\z字符串結尾(類似$,但不受處理多行選項的影響)
\G當前搜索的開頭
\p{name}Unicode中命名為name的字符類,例如\p{IsGreek}
(?>exp)貪婪子表達式
(?<x>-<y>exp)平衡組
(?im-nsx:exp)在子表達式exp中改變處理選項
(?im-nsx)為表達式后面的部分改變處理選項
(?(exp)yes|no)把exp當作零寬正向先行斷言,如果在這個位置能匹配,使用yes作為此組的表達式;否則使用no
(?(exp)yes)同上,只是使用空表達式作為no
(?(name)yes|no)如果命名為name的組捕獲到了內容,使用yes作為表達式;否則使用no
(?(name)yes)同上,只是使用空表達式作為no


一些常用的正則表達式:

匹配中文字符的正則表達式: [\u4e00-\u9fa5]

匹配雙字節字符(包括漢字在內):[^\x00-\xff]

應用:計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)


匹配空行的正則表達式:\n[\s| ]*\r

匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正則表達式:(^\s*)|(\s*$)

利用正則表達式分解和轉換IP地址:

下面是利用正則表達式匹配IP地址,并將IP地址轉換成對應數值的Javascript程序:

function IP2V(ip)
{
?re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g? //匹配IP地址的正則表達式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
?throw new Error("Not a valid IP address!")
}
}

不過上面的程序如果不用正則表達式,而直接用split函數來分解可能更簡單,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配網址URL的正則表達式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

用正則表達式限制只能輸入中文:

用正則表達式限制只能輸入全角字符:?

用正則表達式限制只能輸入數字:

用正則表達式限制只能輸入數字和英文:

===========================================================================================


^\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

總結

以上是生活随笔為你收集整理的实用正则表达式(实用篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。