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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Javascript高级程序设计——9.正则表达式(1)

發(fā)布時(shí)間:2023/12/16 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript高级程序设计——9.正则表达式(1) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、正則表達(dá)式

(1)定義:描述字符模式的對(duì)象

ECMAScript的RegExp類表示正則表達(dá)式

(2)作用:驗(yàn)證客戶端的輸入函數(shù),即在用戶填寫完表單單擊按鈕后,表單被發(fā)送到服務(wù)器,在服務(wù)器端通 ? ? ??常用php,asp.net語(yǔ)言對(duì)其進(jìn)行進(jìn)一步的驗(yàn)證。


2、創(chuàng)建正則表達(dá)式(2種)

(1)new關(guān)鍵字

(2)采用字面量方式(打印出來(lái)的為字面量)

var box=new RegExp('Box'); //第一個(gè)參數(shù)是模式字符串; alert(box); //結(jié)果——"/Box/" //兩個(gè)反斜杠就是正則表達(dá)式字面量表示方法;

var box=new RegExp('Box','gi'); //第二個(gè)參數(shù)為可選; alert(box);

(3)模式修飾符(可選參數(shù))

a、i——忽略大小寫

b、g——全局匹配

c、m——多行匹配

var box='/Box/'; alert(box);
3、測(cè)試正則表達(dá)式

A、RegExp

2種:test()/exec()

結(jié)果——均返回布爾值true、false


(1)test():用于匹配字符串

var pattern=new RegExp('Box'); //模式; var str='box'; alert(pattern.test(str)); 結(jié)果:false,由于大小寫不一致

var pattern=new RegExp('Box','i'); //不區(qū)分大小寫; var str='box'; alert(pattern.test(str)); 結(jié)果:true,一句話匹配


var pattern=/Box/i; //使用字面量方式 var str='box'; alert(pattern.test(str)); 結(jié)果:true



(2)exec():用于匹配數(shù)組

(若匹配到,則返回?cái)?shù)組;若沒(méi)匹配到,返回null)

var pattern=/Box/i; //使用字面量方式 var str='sss'; alert(pattern.test(str)); 結(jié)果:如果沒(méi)匹配到,返回null



B、String對(duì)象

4種:match()——返回pattern中子串或null

? ? ?replace()——用新元素替換舊元素

? ? ?search()——返回字符串中開(kāi)始的位置

? ? ?split()——返回字符串按指定pattern拆分的數(shù)組


(1)match()獲取數(shù)組

a、ig:全局

var pattern=/Box/ig; //全局搜索; var str='This is a Box!This is a Box!'; alert(str.match(pattern)); //將所有匹配到的字符串組合成數(shù)組返回;

b、i:不是全局

var pattern=/Box/i; //沒(méi)有開(kāi)啟全局搜索; var str='This is a Box!This is a Box!';alert(str.match(pattern)); //匹配到第一個(gè)字符串返回?cái)?shù)組;

(2)search查找匹配數(shù)組

var pattern=/xox/i; //沒(méi)有開(kāi)啟全局搜索; var str='This is a Box!This is a Box!';alert(str.search(pattern)); //找不到匹配,返回-1;

(3)replace替換數(shù)組

var pattern=/Box/i; //沒(méi)有開(kāi)啟全局搜索; var str='This is a Box!This is a Box!';alert(str.replace(pattern,'Tom')); //返回替換的字符串,只替換了第一個(gè);

var pattern=/Box/ig; //全局搜索; var str='This is a Box!This is a Box!'; alert(str.replace(pattern,'Tom')); //返回替換的字符串,替換了兩個(gè);

(4)split表示拆分?jǐn)?shù)組



4、RegExp屬性

(1)靜態(tài)屬性

var pattern=/(g)oogle/; var str='This is google'; pattern.test(str); //執(zhí)行一下; alert(RegExp.input); //This is google! alert(RegExp.leftContext); //This is alert(RegExp.rightContext); //! alert(RegExp.lastMatch); //goole;(匹配最后一個(gè)) alert(RegExp.lastParen); //g


(2)實(shí)例屬性

google:全局

ignoreCase:區(qū)分大小寫

lastIndex:上次匹配位置


var pattern=/google/ig; alert(pattern.global); //true,是否全局了; alert(pattern.ignoreCase); //true,是否忽略大小寫; alert(pattern.mulyiline); //false,是否換行; alert(pattern.lastIndex); //0,下次匹配位置; alert(pattern.source);//google,原字符串;


5、獲取控制

(1)定義:正則表達(dá)式中的元字符是包含特殊含義的字符。

? ? ? ? (2)元字符可以控制匹配模式的方式,反斜杠后的元字符將失去其特殊含義

a、字符類

(1)單個(gè)字符或數(shù)字

.:點(diǎn)符號(hào)表示匹配除換行符外的任意字符

var pattern=/g..gle/; var str='google'; alert(pattern.test(str));
(2)重復(fù)字符

x*:星號(hào)*表示前邊那個(gè)字符x重復(fù)的0個(gè)或多個(gè)

x+:星號(hào)+表示前邊那個(gè)字符x重復(fù)的1個(gè)或多個(gè)

x.?:問(wèn)號(hào).?表示前邊的字符x重復(fù)的0個(gè)或1個(gè)

x{a,b}:{a,b}表示匹配前邊的字符x重復(fù)(a,b)次

var pattern=/go{2,4}gle/; var str='gooole'; alert(pattern.test(str)); //true
var pattern=/go{3}gle/; //o{3}表示限定為3個(gè) var str='goooole'; alert(pattern.test(str)); //true

var pattern=/go{3,}gle/; //o{3,}表示限定為3個(gè)及3個(gè)以上 var str='goooole'; alert(pattern.test(str)); //true

(3)單個(gè)字符

[a-z]:表示26個(gè)小寫字母,任意一個(gè)都可以匹配

[A-Z]:表示26個(gè)大寫字母,任意一個(gè)都可以匹配

(注意://i有i時(shí),不限定大小寫,為true)

var pattern=/[a-z]oogle/i; //[a-z]表示匹配小寫,有i后綴表示可不區(qū)分大小寫 var str='Goole'; alert(pattern.test(str)); //true,大寫G,由于有后綴i



組合類型1——[a-zA-Z0-9]表示匹配括號(hào)中大小寫的a-z、A-Z、0-9 var pattern=/[a-zA-Z0-9]oogle/; var str='google'; alert(pattern.test(str)); //true
組合類型2——^[a-zA-Z0-9]表示匹配任意不在括號(hào)里大小寫的a-z、A-Z、0-9
b、數(shù)字: (1)簡(jiǎn)單的[0-9] [0-9]:表示匹配0-9的10個(gè)數(shù)字 var pattern=/[0-9]oogle/; //[0-9]表示匹配數(shù)字0-9 var str='6oole'; alert(pattern.test(str)); //true

(2)^、* ^表示非,*表示任意——以[^0-9]*為例 var pattern=/[^0-9*]oogle/; //[^0-9*]表示匹配任意個(gè)非數(shù)字0-9 var str='google'; alert(pattern.test(str)); //true

(3)小寫為正,大寫為非 \d:匹配數(shù)字 \D:匹配非數(shù)字,同[^0-9]相同
\w:匹配字母、數(shù)字及_ \W:匹配非字母、數(shù)字及_

c、數(shù)字+字符組合類型 組合類型1——[a-zA-Z0-9]表示匹配括號(hào)中大小寫的a-z、A-Z、0-9 var pattern=/[a-zA-Z0-9]oogle/; var str='google'; alert(pattern.test(str)); //true
組合類型2——^[a-zA-Z0-9]表示匹配任意不在括號(hào)里大小寫的a-z、A-Z、0-9

組合類型3——/^[a-z]oole[0-9]$/表示以a-z開(kāi)頭,以0-9結(jié)尾
var pattern=/^[a-z]oole[0-9]$/; var str='google'; alert(pattern.test(str)); //true

d、元字符
(1)\b:表示到達(dá)邊界 (2)\|:表示匹配或選擇模式
e、分組的概念 (1)單個(gè)字符 var pattern=/google{4,8}$/; //表示e重復(fù)4-8次 var str='googleeeee'; alert(pattern.test(str));
(2)字符串分組后,當(dāng)成一個(gè)字符 var pattern=/(google){4,8}$/; //分組,將google看成一個(gè)字符; var str='googlegooglegooglegoogle'; alert(pattern.test()); //true

(3)RegExp.$1表示匹配模式中第一個(gè)分組對(duì)應(yīng)的匹配字符串var pattern=/8(.*)8/; var str='This is a 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));
f、貪婪模式+懶惰模式 (1)貪婪模式:“+” var pattern=/[a-z]+/; //+號(hào)表示使用了貪婪模式; var str='asdf'; alert(pattern.test(str)); //所有字符串都變成了1;

(2)懶惰模式:“+?” var pattern=/[a-z]+?/; //+?號(hào)表示使用了惰性模式; var str='asdf'; alert(pattern.test(str)); //只有第一個(gè)字符串都變成了1;
(3)應(yīng)用:運(yùn)用貪婪var pattern=/8(.*)8/; var str='8google8 8google8 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));結(jié)果:<strong>google8 8google8 8google</strong>


(4)禁止貪婪var pattern=/8(.*?)8/; //運(yùn)用了惰性 var str='8google8 8google8 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));結(jié)果:<strong>google</strong> <strong>google</strong>
<strong>google</strong>


總結(jié)

以上是生活随笔為你收集整理的Javascript高级程序设计——9.正则表达式(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。