㈠ 正則表達式概述 什麼是正則表達式
正則表達式概述
正則表達式在程序設計語言中存在著廣泛的應用,特別是用來處理字元串。如匹配字元串、查找字元串、替換字元串等。可以說,正則表達式是一段文本或一個公式,它是用來描述用某種模式去匹配一類字元串的公式,並且該公式具有一定的模式。
本小節將介紹正則表達式的基本概念、第一個正則表達式,以及測試正則表達式的工具Code Architects Regex Tester。
什麼是正則表達式
正則表達式(Regular
Expression)起源於人類神經系統的早期研究。神經生理學家Warren McCulloch和Walter
Pitts研究出一種使用數學方式描述神經網路的方法。1956年,數學家Stephen
Kleene發表了一篇標題為「神經網事件的表示法」的論文,並在該論文中引入了「正則表達式」這一個概念。該論文稱正則表達式是:「正則集的代數」的表達式。因此,採用「正則表達式」這個術語。正則表達式的定義存在多種說法,具體如下:
正則表達式就是用某種模式去匹配一類字元串的公式,主要用來描述字元串匹配的工具。
正則表達式描述了一種字元串匹配的模式。它可以用來檢查字元串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
正則表達式是由普通字元(如字元a到z)以及特殊字元(稱為元字元)組成的文字模式。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
正則表達式就是用於描述某些規則的工具。這些規則經常用於處理字元串中的查找或替換字元串。換句話說,正則表達式就是記錄文本規則的代碼。
正則表達式就是用一個「字元串」來描述一個特徵,然後去驗證另一個「字元串」是否符合這個特徵。
學過《編譯原理》的讀者可能知道不確定有限自動機(Non-deterministic
finite automaton,簡稱NFA)和確定有限自動機(Deterministic finite
automaton,簡稱DFA)。其實,正則表達式是一個不確定有限自動機。NFA和DFA的最大區別在於它們的狀態轉換函數。NFA可以對同一個字元串產生多種理解方式,而DFA則只有唯一的一種理解方式。也正因為如此,NFA在匹配過程中可能會回溯,NFA的效率一般要低於DFA。因此,在書寫正則表達式時盡量減少回溯來提高正則表達式的效率。
如果你使用過Windows或DOS下用於文件查找的通配符*和?,那麼你不難理解正則表達式。如果你需要查找所有Word文檔,那麼可能使用表達式*.doc。其中,字元*是一個通配符,它可以代表任意字元串。正則表達式和通配符具有相似性,它也可以使用一些字元(如字元.)表示任意字元。然而,它比通配符更具有精確性。
在正則表達式中,匹配是最常用的一個詞語,它描述了正則表達式動作結果。給定一段文本或字元串,使用正則表達式從文本或字元串中查找出符合正則表達式的字元串。有可能文本或字元存在不止一個部分滿足給定的正則表達式,這時每一個這樣的部分被稱為一個匹配。其中,匹配存在下面3種類型:
形容詞性的匹配,即一個字元串匹配一個正則表達式。
動詞性的匹配,即在文本或字元串里匹配正則表達式。
名詞性的匹配,即字元串中滿足給定的正則表達式的一部分。
正則表達式的應用非常廣泛,特別是在字元串處理方面。目前來說,正則表達式已經在很多軟體中得到廣泛了應用,如Linux、Unix、HP等操作系統,C#、PHP、java等程序開發環境,以及很多的應用軟體中,都可以看到正則表達式的這樣或那樣的應用。正則表達式常見的應用如下:
驗證字元串,即驗證給定的字元串或子字元串是否符合指定特徵,譬如驗證是否是合法的郵件地址、驗證是否為合法的HTTP地址等。
查找字元串,從給定的文本中查找符合指定特徵的字元串,比查找固定字元串更加靈活方便。
替換字元串,即把給定的字元串中的符合指定特徵的子字元串替換為其他字元串,比普通的替換更強大。
提取字元串,即從給定的字元串中提取符合指定特徵的子字元串。
㈡ jQuery實現手機號正則驗證輸入及自動填充空格功能
本文實例講述了jQuery實現手機號正則驗證輸入及自動填充空格功能。分享給大家供大家參考,具體如下:
先來看看運行效果(在刪除時連刪即可):
具體代碼:
<!DOCTYPE
html>
<html
lang="en">
<head>
<meta
charset="UTF-8">
<title>Document</title>
</head>
<body>
<input
type="text"
id="inp">
<script
src="jquery-1.12.3.min.js"></script>
<script>
$(function(){
$("#inp").keyup(function(){
/*
手機號驗證時:
var
pattern
=
/^1[3|4|5|7|8]\d{1}\s\d{4}\s\d{4}$/;
pattern.test(str);
*/
_self
=
$(this);
if(_self.val().length
==
3
||
_self.val().length
==
8){
var
str
=
_self.val()+"
";
_self.val(str);
}
});
});
</script>
</body>
</html>
PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:
JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg
更多關於jQuery相關內容可查看本站專題:《jQuery正則表達式用法總結》、《jQuery字元串操作技巧總結》、《jQuery操作xml技巧總結》、《jQuery擴展技巧總結》、《jquery選擇器用法總結》及《jQuery常用插件及用法總結》
希望本文所述對大家jQuery程序設計有所幫助。
㈢ js 正則驗證不能含有中文與特殊字元
varmyReg = /^[a-zA-Z0-9_]{0,}$/;
if(!myReg.test(input.val())) {
$.validation.tip(false, input, "用戶名不能含有中文或特殊字元");
return;
}
js通過正則表達式限制input輸入框只能輸入英文字母和數字,不能輸入中文。
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">
文本框中僅允許輸入英文字母,小數點,數字,禁止輸入中文字元以及其他特殊字元!
<input type="text" name="username" onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" />
輸入大於0的正整數
<input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}">
PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:
JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg
var temp = 'abcdefg Fw:123456 Fw:789.1011';
temp =temp.indexOf(『.』); //匹配某個字元位置
alert(temp);��var temp = 'dsd-5555'
temp =temp.replace('-',''); //匹配某個字元必替換
alert(temp);