JavaScript正则表达式

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             匹配非单词边    界。

            查找 NUL 字符。

             查找换行符。

f             查找换页符。

            查找回车符。

            查找制表符。

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 || /.dd$/.test(value))event.returnValue=false">

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

<input onkeyup="this.value=this.value.replace(/^(-)*(d+).(dd).*$/,'$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)

原文地址:https://www.cnblogs.com/suvllian/p/5544363.html