在Javascript下使用Regex的學習筆記

來源:互聯網
上載者:User

因為工作中的需要,要在Javascript下對字串的格式進行校正,想到使用Regex,於是有了這篇學習筆記。

 學習樣本1:判斷非負整數

<html>
<head>
<title>在Javascript下使用Regex的學習筆記</title>
</head>
<body>
<script language="javascript">...
var regexs = /^/d+$/;
var result = regexs.test("4");
alert(result);
</script>
</body>
</html>

說明:
1、這是一個完整的例子,把全部代碼複製到一個文字檔中,另存新檔*.html格式就可以運行看到效果。
2、/^/d+$/中,兩個/之間的部分就是一個Regex,這個Regex代表的含義是非負整數。
3、^代表字串的起始字元,/d匹配任何數字,合起來的意思就是這個字串必須以數字開頭。
4、/d後面的+代表,1個或者多個的意思,合起來就是1個或者多個數字。
5、$代表在符串的結束字元,和前面聯絡在一起,就是結束字元必須也是數字。
6、所以綜合起來就表示,數字開始並且數字結束,中間也都是數位字串,字串的長度大於等於1,自然也就是代表非負整數了。
7、test()是Regex的一個方法,用於判斷指定的字串是否符合Regex的格式。在這個例子中,如果傳4或者0,最後都會返回true,如果傳負數,就會返回false。

學習樣本1中的Regex,還可以有另外的寫法:

var regexs = /^[0-9]+$/;

說明:
1、[0-9]代表0-9之間的任何一個數字,作用和/d一樣。
2、把這段代碼替換學習樣本1中相應的部分會得出同樣的結果。

根據上邊代碼,可以再進行推廣,下邊這段代碼是用來判斷由26個英文字母的大寫組成的字串:

var regexs = /^[A-Z]+$/;

同理,下邊這段代碼是用來判斷由26個英文字母的小寫組成的字串:

var regexs = /^[a-z]+$/;

把前幾個例子組合一下,下面的例子是用來判斷由數字和26個英文字母組成的字串:

var regexs = /^[A-Za-z0-9]+$/;

在實際應用中,除了26個字母和數字,可能還要包含底線,這個就可以簡化了,有現成的:

var regexs = /^/w+$/;

說明:
1、/w代表的含義就是26個字母的大小寫、10個數字或者底線。

學習樣本2:判斷正整數(比第一個例子前進一小步^_^)

<html>
<head>
<title>在Javascript下使用Regex的學習筆記</title>
</head>
<body>
<script language="javascript">...
var regexs = /^[1-9]+[0-9]*$/;
var result = regexs.test("1234");
alert(result);
</script>
</body>
</html>

說明:
1、既然判斷正整數,就要明白和第一個例子的區別,其實就是要把0排除在外,這就有兩種情況,如果只有一位元,那麼只能是1-9,如果是兩位元或者以上,最高位應該是1-9,後幾位任一數字都可。
2、*代表0個或者多個,和[0-9]組合在一起,就是沒有數字或者由多個數字,這樣就把一位元和多位元的情況都考慮到了。
3、網上有個教程中的例子是這樣寫的/^[0-9]*[1-9][0-9]*$/,這麼寫會把05和00045等也都算作正整數,不符合要求。

和這個例子同理,我們可以來判斷負整數:

var regexs = /^-[1-9]+[0-9]*$/;

說明:
1、這裡直接使用^-,表示字串必須以-開頭,其他的都一樣了。

 剛才我們把0給去掉了,現在再加回來,來判斷非正整數:

var regexs = /^(-[1-9]+[0-9]*|0)$/;

說明:
1、非正整數就是負整數和0,所以在判斷條件中要把兩個都帶上,但是負整數是以負號開頭,而0不是,-0不符合文法,所以把兩個條件寫到一起,從邏輯上來說就會有問題。這樣我們就加了一個或的判斷條件,就是|,表示符合前一個條件的或者符合後一個條件的。

 順著前一個例子繼續,我們現在來判斷整數:

var regexs = /^(-?[1-9]+[0-9]*|0)$/;

說明:
1、整數包括正整數、負整數和0,這裡需要注意的是,不能存在-0或者-0045這樣的數字。
2、這裡引用了?,?代表前面的字元出現0次或者1次,這樣意思就清晰了。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.