導航:首頁 > 編程語言 > js正則方法

js正則方法

發布時間:2023-03-02 14:28:32

js 不能為空的正則表達式怎麼寫

答案:var reg = /S/;

reg.test($("value").val());

正則表達式是對字元串(包括普通字元(例如,a 到 z 之間的字母)和特專殊字元(稱屬為「元字元」))操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。

正則表達式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字元串。

(1)js正則方法擴展閱讀:

正則表達式的特點是:

1. 靈活性、邏輯性和功能性非常強;

2. 可以迅速地用極簡單的方式達到字元串的復雜控制。

3. 對於剛接觸的人來說,比較晦澀難懂。

由於正則表達式主要應用對象是文本,因此它在各種文本編輯器場合都有應用,小到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器,都可以使用正則表達式來處理文本內容。

參考資料:網路——正則表達式

㈡ js 如何正則匹配多個,像php 的preg_match()

javaScript中的 match() 方法可以實現

match() 方法可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配。

stringObject.match(searchvalue)
stringObject.match(regexp)

參數說明
searchvalue 必需。規定要檢索的字元串值。
regexp 必需。規定要匹配的模式的 RegExp 對象。如果該參數不是 RegExp 對象,則需要首先把它傳遞給 RegExp 構造函數,將其轉換為 RegExp 對象。

返回值
存放匹配結果的數組。該數組的內容依賴於 regexp 是否具有全局標志 g。

其他說明
match() 方法將檢索字元串 stringObject,以找到一個或多個與 regexp 匹配的文本。這個方法的行為在很大程度上有賴於 regexp 是否具有標志 g。

如果 regexp 沒有標志 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。如果沒有找到任何匹配的文本, match() 將返回 null。否則,它將返回一個數組,其中存放了與它找到的匹配文本有關的信息。該數組的第 0 個元素存放的是匹配文本,而其餘的元素存放的是與正則表達式的子表達式匹配的文本。除了這些常規的數組元素之外,返回的數組還含有兩個對象屬性。index 屬性聲明的是匹配文本的起始字元在 stringObject 中的位置,input 屬性聲明的是對 stringObject 的引用。

如果 regexp 具有標志 g,則 match() 方法將執行全局檢索,找到 stringObject 中的所有匹配子字元串。若沒有找到任何匹配的子串,則返回 null。如果找到了一個或多個匹配子串,則返回一個數組。不過全局匹配返回的數組的內容與前者大不相同,它的數組元素中存放的是 stringObject 中所有的匹配子串,而且也沒有 index 屬性或 input 屬性。

注意:在全局檢索模式下,match() 即不提供與子表達式匹配的文本的信息,也不聲明每個匹配子串的位置。如果您需要這些全局檢索的信息,可以使用 RegExp.exec()。

例如:
我們將使用全局匹配的正則表達式來檢索字元串中的所有數字:

<script type="text/javascript">

var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))

</script>

輸出:

1,2,3

㈢ js密碼正則表達式:要求包含大小寫字母、數字和特殊符號,8~16位

1、首先我們在script中編寫函數。

㈣ js正則表達式 匹配兩個特定字元間的內容

匹配兩個特定字元間的內容由以下兩種方法:

1.以組形式捕獲
Reference:(.*?)About the author //多行模式 捕獲組1
以下是java語法
String regex = "Reference:(.*?)About the author"; //此為表達式
String input = ""; //此為待搜索的字元串
Pattern p = Pattern.compile(regex,Pattern.DOTALL); //多行模式
Matcher matcher = p.matcher(input);
ArrayList<String> list = new ArrayList<String>();
if (matcher.find()) {
list.add(matcher.group(1)); //這個地方捕獲組1
}
// list 就是搜索的結果
如果是單行模式請注意,表達式應寫為:
Reference:((.| )*?)About the author //單行模式 捕獲組1

2.使用零寬斷言,表達式如下:
(?<=Reference:).*?(?=About the author)

㈤ JS正則表達式詳解

RegExp是JS的正則表達式對象,實例化一個RegExp對象有 字面量 構造函數 2種方式。

字面量實例化RegExp對象

var reg=/js/gi;

開始和結束的斜線/是正則表達式的邊界,//中間的文本是正則表達式文本,後面的gi是正則表達式的修飾符。

構造函數實例化RegExp對象

var reg=new Regex(『js』,』gi』);

第一個參數是正則表達式文本,第二個參數是正則表達式修飾符。

global:RegExp 對象是否具有標志 g。

ignoreCase:RegExp 對象是否具有標志 i。

lastIndex:一個整數,標示開始下一次匹配的字元位置。

multiline:RegExp 對象是否具有標志 m。

source:正則表達式的源文本。

RegExp 對象有 3 個方法:test()、exec() 以及 compile()。

test()

test() 方法檢索字元串中的指定值。返回值是 true 或 false。

示例:

var reg=/js/gi;

var result=reg.test(『I like js』);

結果:true

exec()

exec() 方法檢索字元串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null。

示例:

var reg=/js/gi;

var result=reg.exec(『I like JS』);

結果:JS

compile()

compile() 方法用於改變 RegExp。

compile() 既可以改變檢索模式,也可以添加或刪除第二個參數。

g:global全文搜索,如果不添加此參數,搜索到第一個匹配就會停止

i:ignore case 不區分大小寫,默認是區分大小寫的

m:multiple lines 多行搜索,默認只搜索第一行

正則表達式文本部分包含 原義文本字元 元字元, 其中的原義文本字元代表字元本身意義的字元,如abc123之類的字元。

元字元代表有特殊含義非字母字元,如、w、d、+、*、? 等。

常用的元字元

更多的JS正則元字元請參考: http://www.runoob.com/regexp/regexp-metachar.html

一般情況下正則表達式中的一個字元對應字元串中的一個字元,如表達式ab的含義是ab。

表達式中用 [] 來定義一個字元類,表示可以匹配[]裡面的這類字元,是一個泛指,而不是一一對應的關系。

如表達式[abc123],表示有其中一個字元串都可以匹配。

在字元類裡面使用橫線-連接2個數字或者字母就可以構建一個范圍類,如[a-zA-z0-9-]表示可以匹配26個大小寫字母和0-9的全部數字以及橫線-。

注意,要匹配橫線」-「,必須把橫線放在最後面。

預定義類可以理解為JS默認給我們寫好的范圍類,讓我們可以使用一個簡單的元字元來使用它。如」w」就是一個預定義類,它等價於范圍類[A-Za-z0-9_];「.」可以匹配除 「 」 之外的任何單個字元。

邊界包含2種,一種是以字元串開始或結尾的邊界,另一種是單詞邊界

量詞表示可以匹配連續多次的元字元

JS正則表達式默認是貪婪模式匹配,它會以最多匹配原則進行查找,非貪婪模式可以讓表達式以最少匹配原則進行查找。

非貪婪模式只需要在量詞後面加上」?」即可,如」123456789″字元串想以3個數字為一組進行匹配表達式寫法/d{3,5}?/g。

表達式中用 () 來定義一個分組,使元字元可以作用於一個表達式字元串組合,如/(js|php){3}/gi。

表達式中的每一個分組匹配的內容都是一個可以捕獲的變數,可以使用$1、$2、$3… 來取值,如表達式/(d{4})-(d{2})-(d{2})/中包含$1、$2、$3。如果想忽略分組匹配的內容,需要在分組前面增加「?:」,就可以得到分組匹配之外的內容。

前瞻就是正則表達式後面加上斷言部分,它不但要匹配表達式部分,還需要滿足斷言部分,匹配的結果不會包含斷言部分。

正向前瞻 exp(?=assert) 如 「w(?=d)」

負向前瞻 exp(?!assert) 如 「w(?!d)」

match()

stringObject.match(regexp)

match() 方法可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配。

如果 regexp 沒有標志 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。

如果沒有找到任何匹配的文本, match() 將返回 null。

否則,它將返回一個數組,其中存放了與它找到的匹配文本有關的信息。該數組的第 0 個元素存放的是匹配文本,而其餘的元素存放的是與正則表達式的子表達式匹配的文本。

search()

stringObject.search(regexp)

search() 方法不執行全局匹配,它將忽略標志 g。它同時忽略 regexp 的 lastIndex 屬性,並且總是從字元串的開始進行檢索,這意味著它總是返回 stringObject 的第一個匹配的位置。

replace()

stringObject.replace(regexp/substr,replacement)

字元串 stringObject 的 replace() 方法執行的是查找並替換的操作。它將在 stringObject 中查找與 regexp 相匹配的子字元串,然後用 replacement 來替換這些子串。如果 regexp 具有全局標志 g,那麼 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。

replacement 可以是字元串,也可以是函數。如果它是字元串,那麼每個匹配都將由字元串替換。但是 replacement 中的 $ 字元具有特定的含義。如下表所示,它說明從模式匹配得到的字元串將用於替換。

split()

stringObject.split(separator,howmany)

如果 separator 是包含子表達式的正則表達式,那麼返回的數組中包括與這些子表達式匹配的字串(但不包括與整個正則表達式匹配的文本)

正則表達式語法語意測試工具: https://regexper.com/

㈥ Js 中的 正則表達式

1定義正則表達式
在js中定義正則表達式很簡單,有兩種方式,一種是通過構造函數,一種是通過//,也就是兩個斜杠。
例如

代碼如下:

var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");

使用構造函數定義正則表達式,注意大小寫,負責就會不起作用。由於構造函數的參數是一個字元串,也可以是兩個斜杠的方式定義,遇到一些特殊字元就需要使用\進行轉義
通過雙斜杠的方式定義同樣的正則表達式

代碼如下:

var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;

代碼如下:

var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);

可以和構造函數達到同樣的效果,但仔細分析,發現,通過構造函數需要更多的轉義字元\

2關於驗證的三個正則表達式方法
使用正則表達式的主要有字元串的方法match,正則表達式的方法exec,test
正則表達式方法test測試給定的字元串是否滿足正則表達式,返回值是bool類型的,只有真和假,如果只是單純的判斷,不需要其他的處理,可以使用尤其是驗證時。

代碼如下:

function test(){
var text="index.aspx?test=1&ww=2&www=3"; //
var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.test(text);
if(result)
{
alert("ok");
}else
{
alert("err");
}

}

正則表達式方法exec測試給定的字元串是否滿足正則表達式,返回匹配到的字元串,如果沒有匹配的則返回null,和test基本一致,如果需要獲取匹配的各個子字元串,可以使用下標的方式,把上邊的test的例子可以改寫如下

代碼如下:

function test(){
var text="index.aspx?test=1&ww=2&www=3";
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp( "\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.exec(text);
if(result)
{
alert("ok");
alert(result); // 是?test=1&ww=2&www=3,ww=2&
alert(result[0]+",0");//是?test=1&ww=2&www=3
alert(result[1]+",1");//是ww=2&
}else
{
alert("err");
}

}

match其實是字元串的方法,但參數確是一個正則表達式,把上邊的例子改寫後,如下

代碼如下:

function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.match(re);
if(result)
{
alert(result);//?test=1&ww=234,test=1&
alert(result[0]+",0");//?test=1&ww=234
alert(result[1]+",1");//test=1&
}else
{
alert("err");
}
}

其實字元串類還有多個函數可以傳遞正則表達式,split,search,replace等但這些方法已經不適合驗證了。

代碼如下:

function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.split(re);
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
}

3正則表達式式的轉義字元
在正則表達式中會經常出現轉義字元,例如問號?在正則表達式中有特殊的含義,如果需要匹配問號?就需要轉義,使用轉義字元反斜杠\
如下兩個都是匹配問號開頭的一段字元串

代碼如下:

function test(){
var text="?test=1&ww=2&www=3";
var re = /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;// \?表示配置問號?
// var re =new RegExp( "^\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");// \\?表示配置問號?
var result= re.exec(text);
if(result)
{
alert("ok");
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
}else
{
alert("err");
}

}

閱讀全文

與js正則方法相關的資料

熱點內容
文件夾樂高 瀏覽:914
外置文件夾掛載 瀏覽:304
人人視頻本地緩存文件 瀏覽:194
java俄羅斯方塊項目描述 瀏覽:354
win10系統被凍結 瀏覽:460
excel文件批量合並 瀏覽:948
linuxxmind 瀏覽:93
蘋果電腦安全軟體 瀏覽:195
u深度取消贊助密碼 瀏覽:168
編程寫東西都寫得是什麼 瀏覽:35
蔚來怎麼推薦app 瀏覽:269
6s輸入密碼來使用siri 瀏覽:742
程序員黑客頭像酷 瀏覽:739
mvc接受上傳文件 瀏覽:365
程序員可以轉金融嗎 瀏覽:193
無需用戶名密碼的共享 瀏覽:775
一加怎麼和win10傳輸文件 瀏覽:425
大數據分析哪些行業 瀏覽:848
win10刪除自動更新文件在哪裡 瀏覽:581
cad打開一個文件要關閉另一文件 瀏覽:432

友情鏈接