开发中js正则表达式使用总结

开发中js正则表达式使用总结
和正则表达式相关的方法和属性:

RegExp对象的方法:

test,返回一个bool值,它指出在被查找的字符串中是否存在模式。如果存在返回true,否则返回false.
exec, 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
compile, 把正则表达式编译为内部格式,从而执行更快。

RegExp对象的属性:

source, 返回正则表达式模式的文本的复本,只读。
lastIndex, 返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。
$1...$9, 返回九个模式匹配期间查找的字符串,只读。
input ($_),返回执行规范表述查找的字符串,只读。最好是这样使用RegExp['$_']
lastMatch ($&),返回任何正则表达式搜索过程中的最后匹配的字符,只读。
lastParen ($+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配,只读。
leftContext ($`),返回被查找的字符串从字符串开始位置到最后匹配之前的位置之间的字符,只读。
rightContext ($'),返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。

string对象一些和正则表达式相关的方法:

match, 找到一个或多个正则表达式的匹配。
replace, 替换与正则表达式匹配的子串。
search, 检索与正则表达式相匹配的值。
split, 把字符串分割为字符串数组。

var re=new RegExp('a');
var re=new RegExp('a','i');

RegExp构造函数第一个参数为正则表达式的文本内容,而第二个参数则为可选项标志,标志可以组合使用:

g, 全文查找
i, 忽略大小写
m, 多行查找

创建正则表达式也可以简写为:
var re=/d+/gi;

所有的元字符:当要用到元字符本身时,要进行转义。
( [ { ^ $ | ) ? * + .

贪婪匹配:re=/(d+)0/;  表示匹配10,100,1000,10000等,能匹配多少就匹配多少。
惰性匹配:re=/(d+)?0)/; 表示匹配10,返回最少匹配。

捕获分组,加入() :re=/(d+)([a-z])/;
非捕获分组,加入?: :re=/(d+)(?:[a-z])/;

候选|
re=/(if|else) d/; 匹配if 3 或else 5

嵌套分组:
(A?(B?(C?)))
多外往内产生三个分组。

反向引用
re=/(d+)-(d+)/;
s="12-34";
s.replace(re,"$2-$1");

re=/(w+)s1/;
匹配go go或how how等。

正向前瞻:?=
re=/([a-z]+)(?=s+8.10)/gi;
s="Ubuntu 8.10";
s.replace(re,'Redtub') //结果为Redtub 8.10

负向前瞻:?!
re=/([a-z](?!d))/i;
str="abc 1 one";
re.test(str);
alert(RegExp.$1);  //结果为one

一个复杂的例子:
构建一个验证电子邮箱地址有效性的正则表达式。电子邮箱地址有效性要求:用户名只能包含
字母数字以及下划线,最少一位,最多15位,用户名后面紧跟@,后面是域名,域名名称要求只
能包含字母数字和(-),并且不能以减号开头和结尾,然后后面是域名后缀(可以有多个),
域名后缀必须是点号连上2-4位英文字母。
var re=/^w{1,15}(?:@(?!-))(?:(?:[a-z0-9-]*(?:[a-z0-9](?!-))(?:.(?!-))))+[a-z]{2,4}$/;

时间: 2025-01-29 19:11:11

开发中js正则表达式使用总结的相关文章

asp.net 开发中常用正则表达式收藏

提供一几个开发中常用正则表达式,如有电话,手机,邮箱,url,有需要的朋友可能可以看一下. 第一个:验证输入的字符串是否为数字 view code    /// <summary>         /// 验证输入字符串为数字         /// </summary>         /// <param name="p_str_num">输入字符</param>         /// <returns>返回一个bool

开发中常用正则表达式收集

开发中常用正则表达式收集 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ascii字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配html标记的正则表达式:<(s*?)[^>]*>.*?</1>|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分

Oracle开发中的正则表达式

今天在一个技术讨论群里有人问了一个问题,@我了一下,我就看了一眼.问题给了一个字符串,字符串里有数字有字母有特殊符号,需求是取该字符串中连续的数字.要求用正则表达式.我对正则表达式也不是精通,一知半解.就帮他看了一下,想了一个思路: 1.先找到第一个数字出现的位置: 2.从第一个数字的位置开始,找到第一个非数字出现的位置: 3.然后从第一个出现数字的位置开始截取字符,截取到第一个非字符的位置 根据以上思路写了一个函数如下:  create or replace  function fc_get_

.net开发中常用正则表达式

最简单的正则表达式大家都已熟悉,即文字字符串.特定的字符串可通过文字本身加以描述:像 foo 这样的正则表达式模式可精确匹配输入的字符串 foo.在本例中,也将匹配如下输入:the foo d was quite tasty,如果希望精确匹配,这可能不是预期结果. 当然,使用正则表达式匹配等于它自身的精确字符串是没有价值的实现,不能体现正则表达式的真正作用.假如不查找 foo,而是查找以字母 f 开头的所有单词,或所有 3 个字母的单词,那该怎么办?目前,这超出了文字字符串的合理范围.我们需要更

安卓(android)开发中js输出汉字乱码如何解决

1.encodeURI和decodeURI [1]语法:encodeURI(string).decodeURI(string) [2]说明:decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码.其中加密值为:其中的十六进制转义序列将被它们表示的字符替换. [3]案例:  代码如下 复制代码 <script type="text/javascript"> var test1="http://www.w3school.com.cn/

JS及J2EE开发中解决乱码的小方法

1.设置HttpServletResponse.setContextType("text/html: charset=utf-8"): 2.在web页面用encodeURIComponent()对查询字符串进行编码.HttpServletRequest.getParameter (name)对特殊字符被进行替换.(如:+)自动替换成" "(空白字符串). 3.在进行查询字符串进行传输时,尽量对其进行base64编码,减少网络传输量.进行base64编码之后 ,必须进

JS正则表达式获取字符串中特定字符的方法

 这篇文章主要介绍了JS正则表达式获取字符串中得特定字符,通过replace的回调函数获取,需要的朋友可以参考下 实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test    实现的机制:通过replace的回调函数获取.    代码:  代码如下: var str = "abcdefgname='test'sddfhskshjsfsjdfps";  var reg = /name='((w|-|s)+)/ig;  st

js正则表达式中test,exec,match方法的区别介绍

 本篇文章主要是对js正则表达式中test,exec,match方法的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 js正则表达式中test,exec,match方法的区别说明   test  test 返回 Boolean,查找对应的字符串中是否存在模式. var str = "1a1b1c"; var reg = new RegExp("1.", ""); alert(reg.test(str)); // true     e

JS正则表达式替换页面中内容

问题描述 JS正则表达式替换页面中内容 我想用正则表达式替换table中除了标签""<tr class=""template"" ng-repeat=""model in model.child""></td>""里面的ng-model中的内容,将ng-model=""model.*""替换成ng-model="&