【原】JS正则表达式里的控制符
正则表达式易于使用而又让人费解,乍一看上去,就像是一行行的乱码,但是它的功能确实又不容小觑。今天整理正则时,纠正了自己的一个误解。
先缕一缕:
正则表达式的两种声明方式:
字面量、构造器
(RegExp构造器适用于必须在运行时动态生成正则表达式的情形,并且还涉及到双重转义的问题,因此优先选择字面量方法声明。)
RegExp实例的两个方法:
exec();//返回一个数组(一个个的捕获组)
test();//返回一个布尔值
exec()涉及到了正则表达式的分组,他有四种分组:捕获型、非捕获型、向前正向匹配、向前负向匹配。
捕获型:括号里的内容被匹配后,会保存在RegExp中,如:
var str = "we are family~~";
var pattern = /(are)/;
pattern.test(str);
alert(RegExp.$1); //输出:are
非捕获型:括号里的内容被匹配后,不会保存在RegExp中,如:
var str = "we are family~~";
var pattern = /(?:are)/;
pattern.test(str);
alert(RegExp.$1); //输出:(空)
问题出现了:我习惯性地在用字面量去声明正则表达式时加上开始和结束控制符“/^&/”,结果并没有输出我想要的结果:
var str = "we are family~~";
var pattern = /^(are)&/;
alert(pattern.test(str)); //输出:false
才发现这个/^$/并非我想想中的那个意思。
我们用^、$去框定(这是《JS语言精粹》里的用词,感觉很贴切)一个正则表达式,它指引正则表达式对文本的所有字符进行匹配,并且匹配那些以特定字符开始和结束的字符串。
“^”:表示一个字符串的开始,将匹配一个以特定字符开头的字符串,如果上例中str的值为“are we family~~",那么alert(pattern.test(str))就会输出true;
“$”:表示一个字符串的结束,将匹配一个以特定字符结束的字符串,如果上例中str的值为“we family are",那么alert(pattern.test(str))就会输出true;
其次,string的实例也有一个match方法与正则的exec方法很类似,他们的本质是相同的,书写上刚好是顺序颠倒了一下:
var str = "we are family~~";
var pattern = /are/;
alert(pattern.exec(str)); //输出数组:are,are
alert(str.match(pattern)); //输出一个数组:are,are,该数组与exec方法调用后返回的数组一样
最后想说,正则的使用一定要细心,这么琐碎的东西拼凑起来,去实现各种功能强大的验证,真是可以将我们开发人员的匠心发挥到极致了,并且不严谨的正则表达式是一个常见的安全漏发源地。
【原】JS正则表达式里的控制符的更多相关文章
- js正则表达式replace里有变量的解决方法用到RegExp类
一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...
- js正则表达式【原】
js正则表达式 http://www.w3school.com.cn/js/js_obj_regexp.asp js常用正则表达式 我的自测样例 <HTML> <HEAD> & ...
- JS正则表达式大全
转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...
- js正则表达式实例(汇总)
来源:如何用JAVASCRIPT 正则表达式取出字符串最后一组数字,谢谢 如 30CAC0040 取出40 3SFASDF92 取出92 正则如下://d+$/g 统一空格个数 来源:正 ...
- JS正则表达式大全(整理详细且实用)
JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...
- JS正则表达式完整教程
JS正则表达式完整教程(略长) 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程, ...
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- 【正则】精通JS正则表达式,没消化 信息量太大,好文
http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...
- (转)精通 JS正则表达式
精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 ...
随机推荐
- ios学习之路
整合网络资源和自己的实际经验,表述于此. 1 Xcode详解 非常实用的xcode介绍,详情请见外部链接http://demo.netfoucs.com/shulianghan/article/det ...
- Android Studio 总结
1:添加插件 File->Setting->plugins->Browse repoistories
- main函数的简介
//// main函数的简介.h// IOS笔记//// Created by .// Copyright © 2015年 All rights reserved.// //#import ...
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...
- 037. asp.netWeb用户控件之五使用用户控件实现文件上传功能
fileUpload.ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile= ...
- Lab_5_SysOps_Resources_Linux_v2.5
System Operations - Lab 5: Managing Resources Using Tagging (Linux) - 2.5 ========================== ...
- ElasticSearch安装及部署
安装及部署 一.环境配置 操作系统:Cent OS 7ElasticSearch版本:1.3.2JDK版本:1.7.0_51SSH Secure Shell版本:XShell 5elasticsear ...
- 少见的sql
1,values 的新用法,出现自2008 SELECT * FROM table AS a ,,,'qq3')) tem(id,name) ON a.id=tem.id insert into xx ...
- 企业架构(Enterprise Architecture)
ylbtech-Miscellaneos: 企业架构(Enterprise Architecture) A,返回顶部 1, 简称EA.是指对企业事业信息管理系统中具有体系的.普遍性的问题而提供的通用解 ...
- MRD
搜索 复制