js正則

Evernote Export

js正則

首先我們要了解什麼是正則表達式?

正則表達式是構成搜索模式(search pattern)的字符序列。
當您搜索文本中的數據時,您可使用搜索模式來描述您搜索的內容。
正則表達式可以是單字符,或者更復雜的模式。
正則表達式可用於執行所有類型的文本搜索和文本替換操作。

創建一個正則

1、通過new創建正則
var num = new RegExp("hello", "ig");
2、省略new創建正則
var num = RegExp("hello", "ig");
3、正則常量賦值
var eg = /hello/ig;
正則可以傳入兩個參數:
1、正則主體部分,一般情況下就是字符串
2、修飾符(沒有先後順序)
i 忽略大小寫
g 全局匹配
m 換行匹配

正則表達式的常用方法

1.test
語法:正則.test(字符串);
功能:在字符串中匹配正則是否存在
返回值:如果存在返回true
如果不存在就返回false

var str = "how aRe you";
var num = /are/i;  //匹配are忽略大小寫
alert(num.test(str));  //返回true

2.exec
格式:正則.exec(字符串)
功能:在字符串中匹配正則是否存在
返回值:如果存在返回一個數組,數組裏面存放着匹配的內容.如果不存在,返回null

alert(num.exec(str));  //返回aRe

正則可以用的四個字符串方法

match
語法:字符串.match(正則)
功能:在字符串中匹配這個正則是否存在
返回值:如果存在,返回一個數組,數組放着,匹配到的子串.如果不存在,返回null

var str = "how are Are ARE you";
var num = /arex/ig;
alert(str.match(num));   //are,Are,ARE

search
語法:字符串.search(正則)
功能:在字符串中,查找正則表達式,第一次出現的位置
返回值:如果查找到,返回,查找到的下標.查找不到,返回-1

var str = "how ARE are you";
var num = /are/i;
alert(str.search(num));   //4

replace
語法:字符串.replace(正則, newStr);
功能:在字符串中找到正則,並且將他替換成新字符串。
返回值:替換成功的新字符串

var str = "how are Are ARE you";
var num = /are/ig;
var newStr = str.replace(num, "two");
alert(newStr);   //how two two two you

split
語法:字符串.split(正則)
功能:使用正則對字符串進行字符串分割
返回值:分割完的子串組成的數組。

var str = "how are Are ARE you";
var num = /are/i;
var arr = str.split(num);
alert(arr);   //how , , , you

元字符

元字符就是正則表達式中有特殊含義的字符。

單個字符
. 匹配單個任意字符
[範圍] 匹配單個範圍內的字符
[0-9] 匹配單個的數字字符
[a-zA-Z0-9_] 匹配單個數字、字母或者下劃線字符
[^範圍] 匹配單個除範圍內的字符
\d 等價於 [0-9] 匹配單個的數字字符
\D 等價於 [^0-9] 匹配單個的非數字字符
\w 等價於[a-zA-Z0-9_] 匹配單個數字、字母或者下劃線字符
\W 等價於[^a-zA-Z0-9_] 匹配非單個數字、字母或者下劃線字符

空白字符
\s 匹配任意的空白字符 空格、回車、換行(\n)、tab鍵
\S 匹配任意的非空白字符

錨字符(必須用在正則表達式的開頭和結尾)
^ 行首匹配
$ 行尾匹配

重複字符(x代表任意的單個字符或者任意的單個元字符)
x+ 至少匹配一個x字符
x? 匹配0個或者1個x字符
x* 匹配任意個x字符
x{m,n} 匹配至少m個,至多n個x字符
x{n} 匹配n個x字符
(xyz) 凡是通過小括號括起來的多個字符,當做一個字符進行處理

替代字符
|

如果需要在正則表達式中用元字符本來的字符含義,必須經過轉義
\. 代表字符.的意思
\* 代表字符*的意思

javascript的一些正則表達式

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

正則一些常見的案例

驗證郵政編碼

 var num = /^[1-9]\d{5}$/;
 alert(num.test("100000"));  //true
 alert(num.test("5n8000"));  //false

判斷文件名是否是壓縮包

var num = /^\w+\.(zip|rar|rg)$/i;
alert(num.test("1.zip"));  //true
alert(num.test("666.rzr"));  //false

匹配一個字符串是純中文組成的字符串

//“\u4e00”和“\u9fa5”是unicode編碼,並且正好是中文編碼的開始和結束的兩個值
var num = /^[\u4e00-\u9fa5]+$/;  
alert(num.test("我是中國1人爲武漢加油"));  //false
alert(num.test("我是中國人爲武漢加油"));  //true

手機號碼驗證

var num = /^1\d{10}$/   //首數字必須爲1
alert(num.test("123n1231231));  //false
alert(num.test("12311231231));  //true

身份證驗證

idCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
    alert(idCard.test("440811199809162822"))  //true
    alert(idCard.test("44081119980916282X"))  //true
    alert(idCard.test("4408111n9809162822"))  //false
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章