我這里給你寫了一個例子

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站設計、成都網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的扶風網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
var reg = /^[a-zA-Z]$/;// 這里是 正則表達式,大小寫英文字母都可以
if (reg.test(userName.value) != true) {
alert("用戶應為全英文");
}
希望對你有用,如果還有問題,請繼續(xù)追加問題
親愛的讀者朋友,如果你點開了這篇文章,說明你對正則很感興趣。
想必你也了解正則的重要性,在我看來正則表達式是衡量程序員水平的一個側面標準。
關于正則表達式的教程,網上也有很多,相信你也看了一些。
與之不同的是,本文的目的是希望所有認真讀完的童鞋們,都有實質性的提高。
本文內容共有七章,用JavaScript語言完整地討論了正則表達式的方方面面。
如果覺得文章某塊兒沒有說明白清楚,歡迎留言,能力范圍之內,老姚必做詳細解答。
構造正則表達式的方法和創(chuàng)建數(shù)學表達式的方法一樣。也就是用多種元字符與運算符可以將小的表達式結合在一起來創(chuàng)建更大的表達式。正則表達式的組件可以是單個的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。
正則表達式是由普通字符(例如字符 a 到 z)以及特殊字符(稱為"元字符")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。
最簡單的正則 如 : \d{4}-\d{2}-\d{2} 但是實際情況卻不是那么簡單,,要考慮,有效性和閏年等問題..... 對于日期的有效范圍,不同的應用場景會有所不同。MSDN中定義的DateTime對象的有效范圍是:0001-01-01 00:00:00到9999-12-31 23:59:59。 UNIX時間戳的0按照ISO 8601規(guī)范為 :1970-01-01T00:00:00Z。 先考慮與年份無關的前三條規(guī)則,年份可統(tǒng)一寫作 (?!0000)[0-9]{4} 下面僅考慮月和日的正則 1. 包括平年在內的所有年份的月份都包含1-28日 (0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8]) 2. 包括平年在內的所有年份除2月外都包含29和30日 (0[13-9]|1[0-2])-(29|30) 3. 包括平年在內的所有年份1、3、5、7、8、10、12月都包含31日 (0[13578]|1[02])-31) 合起來就是除閏年的2月29日外的其它所有日期 (?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31) 接下來考慮閏年的實現(xiàn) 1 : 四年一閏 ([0-9]{2}(0[48]|[2468][048]|[13579][26]) 2 : 百年不閏,四百年再閏 (0[48]|[2468][048]|[13579][26])00 3 : 合起來就是所有閏年的2月29日 ([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29) 四條規(guī)則都已實現(xiàn),且互相間沒有影響,合起來就是所有符合DateTime范圍的日期的正則 ^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$ 考慮到這個正則表達式僅僅是用作驗證,所以捕獲組沒有意義,只會占用資源,影響匹配效率,所以可以使用非捕獲組來進行優(yōu)化。 ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
參考資料:
“?:”是“非獲取存儲匹配”的意思
“ ?:” 只在一個“()”group中,緊貼著“(”出現(xiàn),例如“(?:abcdefg)”,不同于“ ? ”, “?: ”不是一個量詞,但是與“()”共同構造一個元字符,這個元字符所匹配出來的結果,不會保留,也不能參與諸如替換計算等等的操作。(這個操作在服務端多見一些,前端用的不多)(javascript只有string對象的replace方法能用到這個功能)
簡單來說,就是你的正則表達式如果用不著在javascript里面使用replace方法,“?:”就可以省去(當然,看個人喜好和排版習慣,還有調試中的頁面響應速度,如果加了“?:”反而更快,那就用吧)。
這么說起來還是比較抽象,用實例代碼來說明吧。
!DOCTYPE html
html
head
meta charset="utf-8"
title/title
/head
body
p將匹配的數(shù)字增加后綴“9”/p
p class="demo"/(\d+)/gi:A23G4HFD567./p
p class="demo"/(?:\d+)/gi:A23G4HFD567./p
button onclick="myFunction()"點我/button
script
function myFunction(){
var e=document.getElementsByClassName("demo");
var str=e[0].innerHTML;
var n=str.replace(/(\d+)/gi,"$19");
e[0].innerHTML=n;
str=e[1].innerHTML;
var n=str.replace(/(?:\d+)/gi,"$19");
e[1].innerHTML=n;
}
/script
/body
/html
!----
!--在實例里面“$1代表第一個“()”所匹配的結果--
點擊“點我”按鈕前
點擊“點我”按鈕后
可以看到“/(\d+)/gi”所匹配的結果被用于擴展替換字符串中的“$1”;
但是“/(?:\d+)/gi”所匹配的結果沒有被用于擴展替換字符串中的“$1”,盡管,它也成功地找到了被查找字符串中的數(shù)字,顯然結果沒有被保留。
對了,類似的問題,可以用這種辦法去對比驗證。(比如“?=”、“?!”、“?=”、“?!”是什么意思……)
上圖是在菜鳥教程找到的一個比較全面的正則表達式的元字符列表的部分:
還有,不同軟件的正則表達式的可能有不同的特性,但是目前perl的正則表達式是公認最多特性的。
首先肯定的是JavaScript中是可以使用正則表達式的。
下面我就借鑒秒秒學上的內容,簡單說下。
在沒有了解正則表達式之前,是很難理解它的強大功能的,我們先來看一個在JavaScript中使用正則表達式的語句。
//創(chuàng)建正則表達式,這和聲明字符串很相似,但hello不是放在雙引號中,而是在雙斜杠中’//’。
var myRE = /hello/;
示例中創(chuàng)建正則表達式的代碼其實是簡寫,完整寫法為:var myRE = new RegExp(“hello”);
/*
*使用正則表達式在字符串中查找信息。
*下面代碼使用test方法匹配字符串,這里在myString中匹配myRE中的”hello”字符串,
*若myString中能匹配到test方法,則返回true,否則返回false。匹配過程是大小寫敏
*感的。
*/
var myString = “Does this sentence have the word hello in it?”
if( myRE.test(myString) ) {
alert(“Yes”);
}
test方法只返回true和false,而使用search方法能返回”hello”在myString中第一次出現(xiàn)的下標。
介紹了JavaScript中使用正則表達式的用法后,下面我們來說下正則表達式本身。
在剛剛的示例中,我們用正則表達式匹配的是字符串hello。但很多時候需要匹配的字符串是比較復雜的,如電子郵箱的格式。這時我們就要使用由普通字符以及特殊字符組成的文字模式。特殊字符也許對不了解正則表達式的人來說就是一串亂七八糟的字符,但其實就是因為有了這些亂糟糟的字符,才能使正則表達式好些的強大。下面我們來了解下正則表達式中的特殊字符:
通過普通字符以及特殊字符可以組成復雜的正則表達式。如下是一個逐漸復雜的示例:
其實上面的正則表達式并不算復雜。很多常用的正則表達式可以在網上找到,不用我們自己編寫,如:
匹配電子郵箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
匹配URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
復雜正則表達式的編寫并不簡單,題主只要先大概的了解即可,希望能幫助你入門,推薦你去一個不錯的自學網站?秒秒學上過一遍基礎知識。
網站標題:javascript正則,js判斷正則
瀏覽地址:http://chinadenli.net/article29/dsecijh.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、品牌網站設計、企業(yè)建站、網站策劃、虛擬主機、App開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)