JavaScript RegExp 对象

RegExp:是正则表达式(regular expression)的简写。

正则表达式描述了字符的模式对象。可以使用正则表达式来描述要检索的内容。

简单的模式可以是一个单独的字符。更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。

语法:

var patt=new RegExp(匹配模式,修饰符);

或:var patt=/匹配模式/,匹配方式;

    模式描述了一个表达式模型。修饰符(modifiers)描述了检索是否是全局,区分大小写等。

    注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:

    var re = new RegExp("\\w+");

    var re = /\w+/;

修饰符:修饰符用于执行区分大小写和全局匹配。

修饰符         描述

i             执行对大小写不敏感的匹配。

g             执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m             执行多行匹配。

方括号:方括号用于查找某个范围内的字符。

表达式             描述

[abc]             查找方括号之间的任何字符。

[^abc]             查找任何不在方括号之间的字符。

[0-9]             查找任何从 0 至 9 的数字。

[a-z]             查找任何从小写 a 到小写 z 的字符。

[A-Z]             查找任何从大写 A 到大写 Z 的字符。

[A-z]             查找任何从大写 A 到小写 z 的字符。

[adgk]             查找给定集合内的任何字符。

[^adgk]             查找给定集合外的任何字符。

(red|blue|green)         查找任何指定的选项。

元字符:元字符(Metacharacter)是拥有特殊含义的字符。

元字符         描述

.             查找单个字符,除了换行和行结束符。

\w         查找单词字符。

\W         查找非单词字符。

\d             查找数字。

\D         查找非数字字符。

\s             查找空白字符。

\S             查找非空白字符。

\b             匹配单词边界。

\B             匹配非单词边    界。

\0             查找 NUL 字符。

\n             查找换行符。

\f             查找换页符。

\r             查找回车符。

\t             查找制表符。

\v             查找垂直制表符。

\xxx         查找以八进制数 xxx 规定的字符。

\xdd         查找以十六进制数 dd 规定的字符。

\uxxxx         查找以十六进制数 xxxx 规定的 Unicode 字符。

量词

量词         描述

n+         匹配任何包含至少一个 n 的字符串。

n*             匹配任何包含零个或多个 n 的字符串。

n?         匹配任何包含零个或一个 n 的字符串。

n{X}         匹配包含 X 个 n 的序列的字符串。

n{X,Y}         匹配包含 X 或 Y 个 n 的序列的字符串。

n{X,}         匹配包含至少 X 个 n 的序列的字符串。

n$         匹配任何结尾为 n 的字符串。

^n         匹配任何开头为 n 的字符串。

?=n         匹配任何其后紧接指定字符串 n 的字符串。

?!n         匹配任何其后没有紧接指定字符串 n 的字符串。

RegExp 对象方法

方法         描述                 

compile         编译正则表达式。     

exec         检索字符串中指定的值。返回找到的值,并确定其位置。         

test         检索字符串中指定的值。返回 true 或 false。    

支持正则表达式的 String 对象的方法

方法     描述         

search     检索与正则表达式相匹配的值。         

match     找到一个或多个正则表达式的匹配。         

replace     替换与正则表达式匹配的子串。         

split     把字符串分割为字符串数组。     

实例代码:

实例 1:

在字符串中不区分大小写找"W3CSchool"

var str="Visit W3CSchool";

var patt1=/w3cschool/i;

以下标记的文本是获得的匹配的表达式:

W3CSchool

实例 2

全文查找 "is"

var str="Is this all there is?";

var patt1=/is/g;

以下标记的文本是获得的匹配的表达式:

Is this all there is?

实例 3

全文查找和不区分大小写搜索 "is"

var str="Is this all there is?";

var patt1=/is/gi;

以下 标记的文本是获得的匹配的表达式:

Is this all there is?

常用正则表达式表单:

1.文本框只能输入数字代码(小数点也不能输入)

<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">

2.只能输入数字,能输小数点.

<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">

<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">

3.禁止输入字母

<input onkeyup="this.value=this.value.replace(/[A-z]/g,'')" onafterpaste="this.value=this.value.replace(/[A-z]/g,'')" ></input>

4.只能输入字母和汉字

<input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))"

maxlength=10 name="Numbers">

5.只能输入英文字母和数字,不能输入中文

<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">

6.只能输入数字和英文<font color="Red">chun</font>

<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')">

7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:

<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">

8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:

<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">

9.禁止特殊字符:

onKeyPress="if(event.keyCode < 45 || event.keyCode > 57 ) event.returnValue = false;"

10.只能输入汉字:

<input onkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^

/u4E00-/u9FA5]/g,''))">

style="ime-mode:disabled"禁止汉字输入法

11.只能输入数字:

<input onkeyup="value=value.replace(/[^/d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))">

12.只能输入英文和数字:

<input onkeyup="value=value.replace(/[/W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))">

控制输入框只能输入文字或数字,也可以不允许输入特殊字符

这里不允许输入如下字符: (像 ^&* 等)<br>

<textarea rows=2 cols=20 name=comments onKeypress="if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode <

65) || (event.keyCode > 90 && event.keyCode < 97)) event.returnValue = false;">

13.只禁止空格输入

onkeyup="value=value.replace(//s/g,'')"

onkeydown="if(event.keyCode==32) return false"

14.只能输入中文和英文:

onkeyup="value=value.replace(/[^/a-zA-Z/u4E00-/u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^

/a-zA-Z/u4E00-/u9FA5]/g,''))"

15.不允许输入特殊字符和空格:

<input id="code" onkeypress="return ValidateSpecialCharacter();" onblur="validate(this)"/>

16.不能为空
<input onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('不能为空!')">

17.判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母

/^([a-zA-z_]{1})([\w]*)$/g.test(str)

posted on 2016-05-30 23:28  suvllian  阅读(315)  评论(0编辑  收藏  举报