正則表達式基本概念

援用筆墨

什麼是正則表達式

正則表達式是一個形貌字符形式的對象。重要用來考證客戶端的輸入數據,用戶填寫完表單信息提交后,就會傳遞給背景服務器,服務器會經由過程PHP等背景劇本舉行處置懲罰,由於客戶端考證,勤儉了大批的服務器資本,並供應了優越的用戶體驗。

建立正則表達式

建立正則表達式有兩種要領:

  1. 運用RegExp構建函數吸收兩個參數:一個是要婚配的字符串,一個是形式修飾符(可選)
    var pattern = new RegExp('box');
  2. 字面量體式格局建立,直接運用兩個斜杠。在第二個斜杠背面加上形式修飾符(可選)
    var pattern = /box/ flags; //兩個斜杠和box之間不能有空格

形式修飾符的可選參數:

參數寄義
g全局形式(global)
i不辨別大小寫(case-insensitive)
m多行形式(multiline)

測試正則表達式

exct() 吸收一個參數,該參數和形式婚配,把形式作為數組返回;未婚配到返回null
test() 吸收一個參數,該參數和形式婚配,返回true,不然返回false

運用字符串的正則表達式要領

String對象中的正則表達式要領:

要領寄義
match(pattern)返回婚配到形式中的字符串或null
replace(pattern,replacement)replacement替換pattern
search(pattern)返回字符串中pattern最先的位置
split(pattern)返回用空格拆分的數組

例:

var pattern = /box/ig;
var str = "This is Box! This is Box!";
alert(str.match(pattern));        //Box Box

開啟全局形式,將一切婚配的字符串組合成數組;
未開啟全局形式,婚配到第一個字符串就返回。

var pattern = /box/ig;
var str = "This is Box! This is Box!";
alert(str.replace(pattern,'Tom'));    //This is Box! This is Box!

開啟全局形式,將婚配到的字符串悉數替換掉;
未開啟全局形式,只替換掉第一個查找到的字符串。

var pattern = /box/i;
var str = "This is Box! This is Box!";
alert(str.search(pattern));        //8

查找返回的位置:查到返回對應的位置,未查到返回-1;無需全局形式。

var pattern = / /i;
var str = "This is Box! This is Box!";
alert(str.split(pattern));

返回用空格拆分的數組

RegExp對象的靜態屬性:

屬性短名寄義
input$_當前被婚配的字符串
lastMatch$&末了一個婚配字符串
lastParen$+末了一對圓括號內的婚配子串
leftContext$`末了一次婚配前的字符串
multiline$*用於指定是不是一切的表達式都用於多行的,返回布爾值
rightContext$’末了一次婚配以後的字符串

一切的屬性都能夠用短名來操縱,个中$_能夠用點示意法來操縱,其他都不能夠。

正則表達式元字符是包括特別寄義的字符,能夠掌握婚配形式的體式格局。反斜杠后的元字符將落空其寄義。

獵取掌握

字符類:單個字符和数字

元字符/元標記婚配狀況
.婚配除換行標記外的恣意字符
[a-zA-Z0-9]婚配方括號中恣意字符
1婚配不是方括號中恣意字符
d婚配恣意数字和[0-9]雷同
D婚配非数字和2雷同1
w婚配字母和数字及_
W婚配非字母和数字及_

字符類:空缺字符

元字符/元標記婚配狀況
0婚配null字符
b婚配空格字符
f婚配進紙字符
n婚配換行符
r婚配回車字符
t婚配製表符
s婚配空缺字符、空格、製表符和換行符
S婚配非空缺字符

字符類:替換字符

元字符/元標記婚配狀況
this\where\logo婚配 this 或 where 或 logo 中恣意一個,``必須用分組標記包括起來

字符類:錨字符

元字符/元標記婚配狀況
^行首婚配
$行尾婚配
A只要婚配字符串最先處
b婚配單詞邊境,詞在[]內時無效
B婚配非單詞邊境
G婚配當前搜刮的最先位置
Z婚配字符串完畢處或行尾
z只婚配字符串完畢處

字符類:反覆字符

元字符/元標記婚配狀況
x?婚配0個或1個x
x*婚配0個或1個或多個x
x+婚配1個或多個x
(xyz)+婚配起碼一個(xyz)
x{m,n}婚配起碼m個、最多n個x

字符類:替換字符

元字符/元標記婚配狀況
(string)分組示意一個字符,用圓括號示意
1 或$1婚配第一個分組中的內容
2 或$2婚配第二個分組中的內容
3 或$3婚配第三個分組中的內容

貪慾和惰性(非貪慾)

貪慾是盡量多的婚配內容,惰性(非貪慾)這是盡量少的婚配內容
貪慾是從末端最先婚配,惰性(非貪慾)是從開首最先婚配

貪慾惰性
++?
??
**?
{n}{n}?
{n,}{n,}?
{n,m}{n,m}?

下面例子婚配8和8中的內容,把他替換成QQ

var pattern = /8(.+?)8/g; 
var str = 'This is 8google8, That is 8google8, There is 8google8';
var result = str.replace(pattern,'QQ');
document.write(result);        

輸出效果:This is QQ, That is QQ, There is QQ

毛病婚配:8google, That is 8換成QQ,google穩定,8, There is 8替換成QQgoogle8穩定,就是我們看到的效果。

var pattern = /8(.+?)8/g; 
var str = 'This is 8google, That is 8google8, There is 8google8';
var result = str.replace(pattern,'QQ');
document.write(result);        

輸出效果:This is QQgoogleQQgoogle8

毛病婚配:8google8換成QQ,google穩定,8, That is 8替換成QQgoogle穩定,8, There is 8替換成QQgoogle8穩定,就是我們看到的效果。

var pattern = /8(.+?)8/g; 
var str = 'This is 8google8google8, That is 8google8, There is 8google8';
var result = str.replace(pattern,'>QQ');
document.write(result);        

輸出效果:This is QQgoogleQQgoogleQQgoogle8
  1. a-zA-Z0-9
  2. 0-9
    原文作者:UCCs
    原文地址: https://segmentfault.com/a/1190000014511291
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞