1. 程式人生 > >js中正則表示式元字元不起作用的問題……

js中正則表示式元字元不起作用的問題……

今天在專案過程中發現一個問題,在網上拷的一段驗證日期的正則表示式在專案中不起作用,在很多線上測試正則表示式的網站上都做過測試,自己也讀了正則程式碼,就是看出來有什麼問題:

function checkInDate(inStrdate) {
    var regex = new RegExp("^(?:(?:(\d{4}(-|\/)(?:(?:0?[1,3-9]|1[0-2])(-|\/)(?:29|30)|((?:0?[13578]|1[02])(-|\/)31)))|(\d{4}(-|\/)(?:0?[1-9]|1[0-2])(-|\/)(?:0?[1-9]|1\d|2[0-8]))|(((?:(\d\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))(-|\/)0?2(-|\/)29))))$");
    if (!regex.test(inStrdate)) {
        return false;
    }
    return true;
}

通過網上四處漫無目的的找資料以後,終於在斯達克裡面看到一條比較靠譜的解答

大概意思就是,在js中,正則表示式有兩種用法,一種是使用正則變數的方法來匹配字串,一種是用字串的方法來匹配正則表示式。

我這邊專案中使用的是第一種方法,正則變數方法匹配字串。

這種正則的使用方法在js中有兩種呼叫,分別叫做1、字面量模式;2、建構函式模式。

字面量模式:

var reg=/^\d+a/;

建構函式模式:

var reg = new RegExp("^\\d+a");

從上面我舉的兩個例子來看不難看出這兩種模式的區別……主要是在元字元的使用前,字面量模式下使用元字元可以直接呼叫,而建構函式模式下,需要先轉譯才能使用……

當然,如果在建構函式模式下覺得每次都轉譯會比較麻煩,也可以直接使用與元字元相對應的正則表示式,比如“\d”就直接使用“[0-9]”這樣子,只是我個人覺得還不如轉譯一下來得方便……

以上……

相關推薦

js表示式元字元作用的問題……

今天在專案過程中發現一個問題,在網上拷的一段驗證日期的正則表示式在專案中不起作用,在很多線上測試正則表示式的網站上都做過測試,自己也讀了正則程式碼,就是看出來有什麼問題: function checkInDate(inStrdate) { var regex = n

JS表示式的基礎知識點元字元

正則表示式:又稱為:規則表示式 英語;Regluar Expression 簡寫:regex,regexp或者RE 正則表示式:不是字串,是字串的匹配模式(規則) 需要用反斜槓進行轉移 正則表示式的建立: 1.字面量建立:由兩個斜槓/包裹 var reg = /a/

js表示式test()方法

正則表示式即描述字串規則的表示式 /pattern/attrs          /規則/屬性 new RegExp(pattern,attrs) regexObj.test(str)方法:測試正則表示式與指定字串是否匹

JS表示式詳解及最基本的判斷手機號,郵箱,身份證

    首先最基本的符號型別及含義整理一下。     1,最基本的符號:^  $  *  +  ?         ^    代表字串的開始位置 &nbs

關於js表示式使用的一些簡單實現,比如驗證QQ號碼,郵箱,ip等等...

// 1. 簡單的匹配qq號碼(9位數字) var str = "123456788"; var regex1 = /^(\d{9})$/g; str.match(regex1); // 或者 var str = "niahfdb1345342123"

js表示式判斷是否是數字

function isNumber(val){    var regPos = /^\d+(\.\d+)?$/; //非負浮點數    var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9

js表示式的貪婪模式和非貪婪模式

在講貪婪模式和惰性模式之前,先回顧一下JS正則基礎: 寫法基礎: ①不需要雙引號,直接用//包含 => /wehfwue123123/.test(); ②反斜槓\表示轉義 =>/\.jpg$/ ③用法基礎:.test(str); 語法: ①錨點類 /^a/=&g

【2017-11+10】 JS表示式詳解

在JS的開發過程中,很多時候都需要驗證表單的正確性;使用正則表示式能夠很好的簡化表單的驗證過程。 在JS中,內建了 RegExp 物件,用來進行正則匹配。 一. RegExp 物件的使用

JS全域性表示式匹配同一字串結果一致

示例 var regex = /^\d*$/g; var s = '2333'; console.log(regex.test(s)); console.log(regex.lastIndex);

php 表示式詳解

概述 正則表示式是一種描述字串結果的語法規則,是一個特定的格式化模式,可以匹配、替換、擷取匹配的字串。常用的語言基本上都有正則表示式,如JavaScript、java等。其實,只有瞭解一種語言的正則使用,其他語言的正則使用起來,就相對簡單些。文字主要圍繞解決下面問題展開。 有哪些常用的

Python表示式re.match的用法

re.match(pattern, string, flags) 第一個引數是正則表示式,如果匹配成功,則返回一個Match,否則返回一個None; 第二個引數表示要匹配的字串; 第三個引數是標緻位,用於控制正則表示式的匹配方式,如:是否區分大小寫,多行匹配等等。 需要特別注意的是,這個方法並不是完

WPF表示式的部分應用

無論在哪一種語言中,正則表示式在一定程度上都可以簡化程式碼程式設計。以下為在WPF中的部分應用。 如var sql = new System.Text.RegularExpressions.Regex("[\\r\\n]").Replace(str, " "); 表示對str字串中匹配換行符

Python表示式常用函式sub,search,findall,split等使用

1.原生字串r python中字串前面加上 r 表示原生字串,不會轉義。與大多數程式語言相同,正則表示式裡使用"\"作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元"\",那麼使用程式語言表示的正則表示式裡將需要4個反斜槓"\\":前兩個和後兩個分別用於在程式語言裡轉義成反斜

Python表示式對單個字元,多個字元,匹配邊界等使用

         Regular Expression,正則表示式,又稱正規表示式、正規表示法、正則表示式、規則表示式、常規表示法(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),是電腦科學的一個概

js利用表示式修改某個字元

   js中由於沒有replaceAll()方法,需要替換字串的某些字元時候,得重複呼叫replace()方法,很是累贅。  可以採用正則表示式處理,如以下程式把toolsStartTime中的‘-’替換為‘/’。     var

java表示式的瞭解與實踐記錄

Pattern pattern = Pattern.compile("^\\S+/q/"); Matcher matcher = pattern.matcher(resultString); String qrcode=""; while(matcher.find()){ String path

JS採用表示式獲取位址列引數

getQueryString:function(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = decodeURI(decodeURI(window.location.search)

Java表示式相關類Pattern和Matcher的使用

在Java中,java.util.regex包定義了正則表示式使用到的相關類,其中最主要的兩個類為:Pattern、Matcher:   Pattern 編譯正則表示式後建立一個匹配模式;   Matcher 使用Pattern例項提供的正則表示式對目標字串進行匹

JS利用表示式校驗手機號

JS利用正則表示式校驗手機號 緒         由於專案需求,需要在前端實現手機號碼的校驗。當然了,對於基本的格式校驗應該放在客戶端進行,而不需要再將待校驗的手機號傳送至服務端,在服務端完成校驗,然後將校驗結果返回給客戶端,客戶端根據返回的結果再進

js利用表示式獲取 / 設定URL引數

function getUrlParam(url, key) {      var reg = new RegExp("[?&]" + key + "=([^&]+)", "gmi");      if (reg.test(