1. 程式人生 > >javascript正則表示式(6)——字串物件方法

javascript正則表示式(6)——字串物件方法

String.protatype.search(reg)

1.search()方法用於檢索字串中指定的子字串,或檢索與正則表示式相匹配的子字串

2.方法返回第一個匹配結果index,查詢不到返回-1

3.search()方法不執行全域性匹配,它將忽略標誌g,並且總是從字串的開始進行檢索

下面請看例子:


1.傳入的引數可以不是字串

2.當傳入的引數不是正則的時候,系統會嘗試把引數轉換成正則,如1->/1/

3.不執行全域性匹配,忽略標誌g,並且總是從字串的開始進行檢索。這一點大家可以從最後3條一樣的指令看出

String.protatype.match(reg)

1.match()方法將檢索字串,以找到一或多個與

regexp匹配的文字

2.regexp是否具有標誌g對結果影響很大

我們來看一下沒有g的時候,也就是非全域性呼叫的時候

                                                                          非全域性呼叫

1.如果regexp沒有標誌g,那麼match()方法就只能在字串中執行一次匹配

2.如果沒有找到任何匹配的文字,將返回null

3.否則它將返回一個數組,其中存放了與它找到的匹配文字有關的資訊

那麼它返回了什麼了?我們以前回顧前面非全域性呼叫的內容(與exec是相同的):

1.返回陣列的第一個元素存放的是匹配文字,而其餘的元素存放的是與正則表示式的子表示式匹配的文字

2.除了常規的陣列元素之外,返回的陣列還有2個物件屬性

     a. index宣告匹配文字的起始字元在字串的位置

     b. input宣告對stringObject的引用


非全域性呼叫請看下圖:


                                                                                  全域性呼叫

1.如果regexp具有標誌gmatch()方法將執行全域性檢索,找到字串中的所有匹配子字串

    a.沒有找到任何匹配的子串,則返回null

    b.如果找到了一個或多個匹配子串,則返回一個數組

2.陣列元素中存放的是字串中所有的匹配子串,而且也沒有

index屬性或input屬性
全域性呼叫請看下圖


我們可以看到,match()方法返回的陣列既沒有匹配的分組資訊,也沒有相應的下標資訊。只是單單的告訴你有幾個匹配結果,如果我們只是想獲得匹配內容的話,用match()效率會高一些。如果我們需要詳細資訊,則應該選擇exec()方法。

String.prototype.split(reg)

1.我們經常使用split方法把字串分割為字元陣列

'a,b,c,d'.split(','); //["a","b","c","d"]

2.在一些複雜的分割情況我們可以使用正則表示式解決

'a1b2c3d'.split(/\d/); //["a","b","c","d"]


一般的分割我們用不到正則,但是當我們需要分割的字串中既包含逗號(,)又包含豎線(|)的時候,正則表示式的方便就體現出來了

String.prototype.replace

這是最常用的正則函式之一,可以傳入2個引數,一個引數用於查詢,一個引數用於替換。

第一個例子:


第二個例子:


第二個例子很明顯沒有達到我們期望的效果,後面兩個1沒有被替換,它只匹配了第一個引數。那麼如何才能實現我們要的效果呢?

看一下replace()方法接受哪些引數

String.prototype.replace(str,replaceStr)

String.prototype.replace(reg,replaceStr)

String.prototype.replace(reg,function)

所以我們可以傳入正則表示式的引數,這個時候用正則會方便一點。


其實看到這裡大家也應該猜到了,為什麼第二個例子中只有第一個1被替換了?因為'1'被隱式轉換成了/1/這種正則的寫法。

但是當我們需要進行更精細的操作的時候,正則表示式作為引數就無能為力了,比如我們要將:a1b2c3 => a2b3c4 ,每一個數字加1

                                                                      function引數含義

function會在每次匹配替換的時候呼叫,有四個引數(引數個數不固定)

1.匹配字串

2.正則表示式分組內容,沒有分組則沒有該引數

3.匹配項在字串中的index

4.原字串

如果沒有分組則只有3個引數,如果有1個分組則有4個引數,如果有2個分組則有5個引數。我們需要根據不同的正則表示式來寫不同引數個數的函式,這種設計不太好

請看第一個例子:


搜尋數字,第一個引數是匹配結果,第二個引數是當前匹配的位置,第三個引數是原字串,因為這裡沒有分組,所以只有3個引數

請看第二個使用分組的例子:


添加了分組引數,其他同第一個例子


相關推薦

javascript表示式(6)——字串物件方法

String.protatype.search(reg) 1.search()方法用於檢索字串中指定的子字串,或檢索與正則表示式相匹配的子字串 2.方法返回第一個匹配結果index,查詢不到返回-1 3.search()方法不執行全域性匹配,它將忽略標誌g,並且總是從字串的

JavaScript 表示式字串查詢

首先提出一個問題: 如何取得一個給定的字串substr在另一個字串str中出現的次數? 字串匹配,第一想到的就是正則表示式,但我們最常使用的字面量來建立的正則表示式方式卻無法傳入變數, 這時應該使用另一種建立正則表示式的方式:建構函式,如下 var reg = new R

表示式 切割字串 split()方法的運用

package cn.niit.demo5zhengze; /* 正則表示式 切割字串 split()方法的運用 */ public class Test1 { public static void main(String[] args){ fun

JavaScript 表示式RegExp(text方法/內部類/邊界/量詞/優先順序/replace/trim)

1. 概述 英語:Regular Expression 本質:用來記錄文字規則的程式碼 (為字串定義規則,為輸入內容定義規則!)       應用非常廣泛,如:表單驗證、高階搜尋、生化科學       (有一定難度,不要求非常熟練,但至少會表單驗證) 

JavaScript表示式(三)字串例項方法search

還可以使用字串例項本身的方法來確定制定的正則表示式物件是否在字串中有匹配的詞。請看如下程式碼: function  doSearch(){                  //定義一個字串                  var str = "I have never

手把手教你搞懂JavaScript表示式方法

咱們來看看JavaScript中都有哪些操作正則的方法。 RegExp RegExp 是正則表示式的建構函式。 使用建構函式建立正則表示式有多種寫法: new RegExp('abc'); // /abc/ new RegExp('abc', 'gi'); // /abc/gi

利用表示式進行字串替換(replace方法

語法 str.replace(regexp|substr, newSubStr|function) 引數 regexp(pattern) 一個RegExp物件或者其字面量。該正則所匹配的內容會被第二個引數的返回值替換掉。 substr(pattern) 一個要被 newSubStr 替換

JavaScript表示式-常用方法

公司之前有個胖女孩說你竟然會正則? 其實正則沒那麼難;今天我們說說他常用的幾個API。 在講方法之前, 我們先對正則表示式做一個基本的瞭解: 1、正則表示式定義使用單個字串來描述、匹配一系列符合某個句法規則的字串搜尋模式。 2、英語:Regular Expression,在程式碼中常簡寫為regex、R

Python 表示式的 Match 物件的 group 方法

用法介紹 match.group([group1, ...]) 返回 match 的一個或多個子組。 如果只有唯的一引數,返回單一的子符串;如果有多個引數,結果是對應每一個引數的元素組成的 tuple 。 如果沒有引數, group1 的預設值為 0 (

舉例說明在android中使用表示式去掉字串中標點符號及其他一些特殊符號的方法

在android中使用正則表示式與在java中使用正則表示式是有區別的,比如使用正則表示式去掉一個字串中的標點符號及一些特殊符號時,在java中可以使用的方法是: public static String format(String s){   String str=s.r

13.JS-支援表示式的string物件方法

search():檢測母串中是否含有指定的子串(正則表示式),如果含有,返回該子串的位置,否則返回-1                 語法:字串.search(RegExp) match():檢測母串中是否含有知道的子串(正則表示式),如果含有,返回該子串的陣列,否

使用表示式去掉字串前面多餘的0和後面多餘的0

在專案開發過程中往往可能遇到需要去掉字串前面的0,或者末尾的0已進行方便的like查詢等操作: 去掉字串前面的0: QString str = "000000021"; str.remove(QRegExp("^(0+)"));//+:表示1次或多,^:匹配字串開頭或行頭 去

JavaScript 表示式驗證登入例項

程式碼片段: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>qq登入模擬測試</title> </head> <

JavaScript 表示式使用例項集合

1、字元 ^ 的使用  程式碼片段 <html> <head> <title>字元^的使用</title> <meta http-equiv="Content-Type" conten

JavaScript表示式表單驗證例項

/*是否帶有小數*/ function isDecimal(strValue ) { var objRegExp= /^\d+\.\d+$/; return objRegExp.test(strValue); } /*校驗是否中文名稱組成 */ function

js表示式驗證字串只包括大小寫字母下劃線和-

背景說明 在之前的開發過程中為了校驗一個欄位只含有大小寫字母,下劃線和-花費了不少力氣才搞定,想著趕快寫一篇部落格來記錄下來,日後開發一定會遇到!! 程式碼實現 首先定義一個變數用來存放驗證字串的正則表示式:var regex=/^[A-Za-z0-9_\-]+$/ig;

在Python中使用表示式去掉字串裡的html標籤

有時候會獲得一些帶html標籤的字串,需要把html標籤去掉,獲得乾淨的字串,這時候可以使用正則表示式。 程式碼如下: import re htmeString = '''    <ul id="TopNav">    &nbs

JavaScript表示式與表單驗證

一.非空驗證 判斷非空 最好還是不要使用trim()方法 有的瀏覽器可能不支援 推薦使用正則表示式 判斷是否為空 // " abc "----->"abc "------>"abc"function trim (txt) { var afterText = txt.replace(/^\s*

使用表示式去掉字串前面和後面多餘的0

記錄一下小的工具程式碼 1、去掉字串前邊的0 String str = "000000021"; String newStr = str.replaceAll("^(0+)", ""); System.out.println(newStr); 2、去掉字串後邊的0 String str

詳解JavaScript表示式(三)

本文是JavaScript正則表示式的第三篇文章,若是對正則表示式陌生的話,可以看我之前的兩篇文章。 詳解正則表示式(一) 詳解正則表示式(二) 貪婪模式和非貪婪模式 1、貪婪模式 在匹配成功的情況下,儘可能多的匹配。而JavaScript預設的就是貪婪模式。話不多說,直