正規表示法常用總結
正規表示式,又稱正規表示法、常規表示法。 (英文:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),電腦科學的一個概念。正規表示式使用單一字串來描述、匹配一系列符合某個句法規則。在許多文字編輯器裡,正規表示式通常被用來檢索、取代那些符合某個模式的文字。
正規表示式,有木有人像我一樣,學了好幾遍卻還是很懵圈,學的時候老明白了,學完了忘光了。好吧,其實還是練的不夠,所謂溫故而知新,可以為師矣,今天就隨我來複習一下這傲嬌的正則表達式吧。
為啥要有正規表示式呢?其實就是因為計算機笨(這話不是我說的),比如123456@qq.com,我們一看就是郵箱,可是計算機不認識啊,所以我們就要用一些計算機認識的語言,來製定好規則,告訴它符合這個規則的就是個信箱,這樣計算機就能幫我們找到對應的東西了。所以正則就是用來設定規則,來完成我們需求的一些操作的,比如登入驗證啦,搜尋指定的東西啦等等,說太多都是多餘,直接看正題吧。
定義正規:
#1 var re = new RegExp(“a”); //RegExp物件。參數就是我們想要訂定的規則。有一種情況必須用這種方式,下面會提到。
2 var re = /a/; // 簡寫方法建議使用效能較好不能為空不然以為是註釋,
正則常用的方法
1 test() :在字串中找出符合正規則的內容,若查找到回傳true,反之回傳false.
用法:正規.test(字串)
範例:判斷是否為數字
var str = '374829348791';
#var re = /\ D/; // \D代表非數字
if( re.test(str) ){ // 回傳true,代表在字串中找到了非數字。
alert('不全數是數字');
}else{
#alert('全是數字');
}
正規表示式中有很多符號,代表不同的意思,用來讓我們去定義不同的規則,例如上面\D,還有下面的這些:
\s : 空格
\S : 非空格
\d : 數字
\D : 非數字
\w :字符( 字母,數字,底線_ )
\W : 非字符例子:是否有不是數字的字符
(下面會根據例子,依次講一些常用的字符,最後再作總結。字母的位置), 如果搜尋失敗就回傳-1
用法:字串.search(正規)
在字串中尋找複合正規則的內容。忽略大小寫:i——ignore(正規中預設是區分大小寫的如果不區分大小寫的話,在正規的最後加標識i )
範例:在字串中找字母b,且不區分大小寫
var str = 'abcdef';
var re = /B/i;
// var re = new RegExp('B','i'); 也可以這樣寫
alert( str.search(re) ); // 1
3 match() 在字串中搜尋複合規則的內容,搜尋成功就回傳內容,格式為數組,失敗就回傳null。
用法: 字串.match(正規)
量詞:+ 至少出現一次符合不確定的次數(符合就是搜尋尋找的意思)
全域符合:g ——global(正規中默認,只要搜尋到複合規則的內容就會結束搜尋)
範例:找出指定格式的所有數字,如下找到123,54,33,879
#var str = 'haj123sdk54hask33dkhalsd879';
##var re = /\d+/g; // 每次符合至少一個數字且全域匹配如果不是全域匹配,當找到數字123,它就會停止了。就只會彈出123.加上全域匹配,就會從開始到結束一直去搜尋符合規則的。如果沒有加號,配對的結果就是1,2,3,5,4,3,3,879不是我們想要的,有了加號,每次配對的數字就是至少一個了。
alert( str.match(re) ); // [123,54,33,879]
例子:敏感词过滤,比如 我爱北京天安门,天安门上太阳升。------我爱*****,****上太阳升。即北京和天安门变成*号,
一开始我们可能会想到这样的方法:
var str = "我爱北京天安门,天安门上太阳升。";
var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配
var str2 = str.replace(re,'*');
alert(str2) //我爱**,*上太阳升
//这种只是把找到的变成了一个*,并不能几个字就对应几个*。
要想实现几个字对应几个*,我们可以用回调函数实现:
var str = "我爱北京天安门,天安门上太阳升。";
var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配
var str2 = str.replace(re,function(str){
alert(str); //用来测试:函数的第一个参数代表每次搜索到的符合正则的字符,所以第一次str指的是北京 第二次str是天安门 第三次str是天安门
var result = '';
for(var i=0;i result += '*'; } return result; //所以搜索到了几个字就返回几个* }); alert(str2) //我爱*****,***上太阳升 //整个过程就是,找到北京,替换成了两个*,找到天安门替换成了3个*,找到天安门替换成3个*。 replace是一个很有用的方法,经常会用到。 正则中的字符 ():,小括号,叫做分组符。就相当于数学里面的括号。如下: var str = '2013-6-7'; var re1 = /\d-+/g; // 全局匹配数字,横杠,横杠数量至少为1,匹配结果为: 3- 6- var re1 = /(\d-)+/g; // 全局匹配数字,横杠,数字和横杠整体数量至少为1 3-6- var re2 = /(\d+)(-)/g; // 全局匹配至少一个数字,匹配一个横杠 匹配结果:2013- 6- 同时,正则中的每一个带小括号的项,都叫做这个正则的子项。子项在某些时候非常的有用,比如我们来看一个栗子。 例子:让2013-6-7 变成 2013.6.7 var str = '2013-6-7'; var re = /(\d+)(-)/g; str = str.replace(re,function($0,$1,$2){ //replace()中如果有子项, //第一个参数:$0(匹配成功后的整体结果 2013- 6-), // 第二个参数 : $1(匹配成功的第一个分组,这里指的是\d 2013, 6) //第三个参数 : $1(匹配成功的第二个分组,这里指的是- - - ) return $1 + '.'; //分别返回2013. 6. }); alert( str ); //2013.6.7 //整个过程就是利用子项把2013- 6- 分别替换成了2013. 6. 最终弹出2013.6.7 match方法也会返回自己的子项,如下: var str = 'abc'; var re = /(a)(b)(c)/; alert( str.match(re) ); //[abc,a,b,c]( 返回的是匹配结果 以及每个子项 当match不加g的时候才可以获取到子项的集合) [] : 表示某个集合中的任意一个,比如 [abc] 整体代表一个字符 匹配 a b c 中的任意一个,也可以是范围,[0-9] 范围必须从小到大 。 [^a] 整体代表一个字符 :^写在[]里面的话,就代表排除的意思 例子:匹配HTML标签 比如
var re = /]+>/g; //符合左括號中間至少一個非右括號的內容(因為標籤裡面還有屬性等一些東西),然後匹配右括號var re = //g; //匹配左括號中間至少一個字元或非字元的內容,然後匹配右括號// 其實就是找到左括號,然後中間可以有至少一個內容,一直到找到右括號就代表是一個標籤。
轉義字元
\s : 空格
\S : 非空格
\d : 數字
\D : 非數字
\w : 字元( 字母,數字,底線_ )
#\W : 非字元
. :任意字元
#\. : 真正的點
\b : 獨立的部分( 起始,結束,空格)
#\B : 非獨立的部分
關於最後兩個來看個栗子:
var str = 'onetwo';
var str2 ="one two";
var re = /one\b/; // e後面必須是獨立的可以是起始,空格,或結束
alert( re.test(str) ); //false
alert ( re.test(str2) );//true
#範例:寫一個用class名稱取得節點的函數:
我們之前可能看過這樣的函數:
function getByClass(parent,classname){
if(parent.getElementsByClassName){
return parent.getElementsByClassName(classname);
}
else{
var results = new Array();//用來儲存所有取到的class為box的元素
var elems = parent.getElementsByTagName("*");
for(var i =0;i #if(elems[i].className==classname){ results.push(elems[i]); } } #return results; } } 其實這是有問題的,例如它如果一個標籤裡面有兩個class,或存在相同名字的class,例如
以上是分享正規表示式一些常用的例子的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux下system()函数的总结在Linux系统中,system()函数是一个非常常用的函数,它可以用于执行命令行命令。本文将对system()函数进行详细的介绍,并提供一些具体的代码示例。一、system()函数的基本用法system()函数的声明如下:intsystem(constchar*command);其中,command参数是一个字符

最近几年,PHP编程中的模板引擎已经成为了PHP开发的重要组成部分,方便了程序员进行页面开发和管理。本文将介绍PHP编程中常见的模板引擎。SmartySmarty是一个比较常用的PHP模板引擎,它支持缓存模板、插件模块和自定义函数等一系列功能。Smarty的语法十分灵活,能够解决PHP变量与HTML标记的结合难题,使得PHP语言更适用于模板化的设计。而且,S

H5开发中position属性的常见应用场景,需要具体代码示例在H5开发中,CSS的position属性非常重要,它控制元素在网页中的定位方式。通过合理应用position属性,我们可以实现页面布局的灵活性和美观性。在本文中,我们将介绍position属性的常见应用场景,并通过具体的代码示例来说明。Static(静态定位):position属性的默认值为st

Python作为一种高级编程语言,易于学习和使用。一旦需要编写Python程序时,无法避免地遇到语法错误,表达式语法错误是常见的一种。在本文中,我们将讨论如何解决Python的表达式语法错误。表达式语法错误是Python中最常见的错误之一,它通常是由于错误的使用语法或缺少必要组件而导致的。在Python中,表达式通常由数字、字符串、变量和运算符组成。最常见的

超级全局变量是PHP中非常重要的概念,它可以在程序中访问到任何地方的变量值,而无需使用函数或其他方法来传递变量。在本文中,我们将讨论一下PHP编程中常用的几种超级全局变量。$_GET$_GET是用于收集HTML表单提交的数据的超级全局变量之一。通过$_GET,我们可以获取指定URL中的查询字符串参数,这些参数可以被用于页面的数据过滤或数据查询等操作。例如,当

在C或C++中,逗号“,”有不同的用途。在这里我们将了解如何使用它们。逗号作为运算符。逗号运算符是一个二元运算符,它计算第一个操作数,然后丢弃结果,然后计算第二个操作数并返回值。逗号运算符在C或C++中的优先级最低。示例#include<stdio.h>intmain(){ intx=(50,60); inty=(func1(),func2());}这里60将被分配给x。对于下一条语句,将首先执行func1(

Git工作流程管理经验总结引言:在软件开发中,版本管理是一个非常重要的环节。而Git作为目前最流行的版本管理工具之一,其强大的分支管理能力使得团队协作更加高效灵活。本文将就Git工作流程管理经验进行总结和分享。一、Git工作流程简介Git支持多种工作流程,可以根据团队的实际情况选择合适的工作流程。常见的Git工作流程有集中式工作流、功能分支工作流、GitF

PHP是一种开放源代码、通用的脚本语言,在网页开发领域有着广泛的应用。在PHP编程中,条件语句则是必不可少的基本语法之一,用于实现程序中的各种逻辑判断和流程控制。本文将介绍PHP编程中常见的条件语句。一、if语句PHP中最常用的条件语句就是if语句。if语句的语法如下:if(条件表达式){//条件为真时执行的语句}其中,条件表达式可以是任意


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。