外文翻译——JavaScript Tutorial——Regular Expression——(2)

字符类

假设我们要在字符串中查找一个数字。不是指定的数字,而是任意数字,比如:在"Only 1"中查找"1",在"Give me a 5"中查找"5"。

子串匹配可以在循环中用来查找0-9中的所有数字。但是采用正则式可以更优雅地处理这种情况。

正则式可以利用字符类代替具体的字符。

例如,正则式中用"\d"来表示任意数字。下面例子中匹配了一个数字:

1 showMatch( "I‘m 5 years old", /\d/ )   // 5

最常用的字符类有:

\d:0-9中的任意数字;

\s:空白字符,如tab缩进,换行符等;

\w:拉丁字母,数字或者下划线;

一个正则式可能把字符类和普通标记包含在一起:

1 showMatch( "I‘m the 1st one", /\dst/ )   // matches ‘1st‘

下面代码的正则式中包含几个字符类一起:

1 showMatch( "I‘m 1 year old", /\d\s\w\w\w\w/ )   // 1 year

这里还有一些反义的字符类:

\D:非数字;

\S:非空白字符;

\W:非拉丁字母,数字或者下划线;

例如,查找第一个非字母字符:

1 showMatch( "I‘m 1 year old", /\W/ )   // matches apostrophe ‘

正则式还可以包含不可打印的字符串字符:\n(换行符), \t(制表符)等。这些很明显只是字符,而不是字符类。

空格非常重要!

通常情况下,我们不怎么在意空格。"1-5"和"1 - 5"看起来没什么两样。

但是在正则式中,空格和其他标识是一样的

下面的正则式无法正确运行,因为没有包含空格标识符:

1 showMatch( "1 - 5", /\d-\d/ )  // no matches!

让我们来修改一下。我们可以把空格标识放在正则式中,或者最好把空格包含进去:

1 showMatch( "1 - 5", /\d - \d/ )   // works
2 showMatch( "1 - 5", /\d\s-\s\d/ ) // also works
3 showMatch( "1-5", /\d - \d/ ) // fails! (no spaces in string)

最后一个匹配失败,因为例子中没有空格。所以不要把多余的空格放在正则式中,它们都是有意义的。

在正则式中,点"."表示除换行符以外的任意字符:

1 showMatch( "A char", /ch.r/ ) // "char"
2 showMatch( "A ch-r", /ch.r/ ) // "ch-r"
3 showMatch( "A ch r", /ch.r/ ) // "ch r", the space is also a char

虽然点"."可以表示所有字符,但是必须要有字符:

1 showMatch( "A chr", /ch.r/ ) // not found
时间: 2024-10-09 19:50:37

外文翻译——JavaScript Tutorial——Regular Expression——(2)的相关文章

外文翻译——JavaScript Tutorial——Regular Expression——(1)

原文地址:http://javascript.info/tutorial/regexp-introduction 简介 正则表达式有非常强大的用于字符串“查找”和“替换”的功能.在JS中,它被集成在字符串方法:search, match和replace中. 正则表达式,由一个pattern(匹配规则)和flags(修饰符—可选)组成. 一个基本的正则匹配跟子串匹配一样.斜杠"/"包围的字符串可以创建一个正则表达式. 1 regexp = /att/ 2 3 str = "Sh

外文翻译——JavaScript Tutorial——Regular Expression——(4)

修饰符 一个正则式可能包含一个能影响搜索结果的修饰符. JS中有3个修饰符: g:查找所有结果: i:结果忽略大小写: m:多行匹配模式: 修饰符放在参数后面,如:/.../g. 没有全局修饰符的正则式只返回第一个匹配值: 1 alert( "123".match( /\d/ )) // '1' 如果有全局修饰符,所有匹配值都会被返回: 1 alert( "123".match( /\d/g )) // '1', '2', '3' 多个修饰符也是可行的.比如:忽略大

外文翻译——JavaScript Tutorial——Regular Expression——(3)

特殊字符 在正则式中,有些字符有特殊的用法:[ \ ^ $ . | ? * + ( ). 因为用来增强正则式的匹配功能,所以它们很特殊.不要尝试去记忆它们,等我们都用过以后,你就能轻松记住了. 要把特殊字符当普通标识使用,就必须转义.也就是说,需要在前面加上反斜杠. 比如,我们要查找点".".在正则式中,它代表除换行符以外的所有字符. 所以我们需要转义它: 1 showMatch( "Chapter 5.1", /\d\.\d/ ) // 5.1 如果不转义,&qu

[label][翻译][JavaScript Regular Expression]JavaScript Regular Expressions

原文:http://www.javascriptkit.com/javatutors/re.shtml 校验用户的输入是每一个软件开发者的必须要做的事情. 正则表达式与模式 如何在JavaScript中使用正则表达式呢?这里有两种方式: 1)字面量语法. 2)当你需要动态构建正则表达式时,可以通过RegExp()构造函数. 字面量语法如下: var RegularExpression = /pattern/; RegExp()构造函数方法如下: var RegularExpression = n

JavaScript Patterns 3.6 Regular Expression Literal

1. Using the new RegExp() constructor // constructor var re = new RegExp("\\\\", "gm"); 2. Using the regular expression literal // regular expression literal var re = /\\/gm;  when using the RegExp()constructor, you also need to escape

[LeetCode][JavaScript]Regular Expression Matching

Regular Expression Matching Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the entire input string (not partial). The

Python正则表达式Regular Expression基本用法

资料来源:http://blog.csdn.net/whycadi/article/details/2011046   直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表达式re模块的基本函数. (1)findall函数的用法 findall(rule,target[,flag])是在目标字符串中找到符合规则的字符串.参数说明:rule表示规则,target表示目标字符串,[,flag]表示的是规则选项.返回的结果是一个列表.若没找到符合的,是一个空列表. 如: 因

Regular Expression(正则表达式)之邮箱验证

正则表达式(regular expression, 常常缩写为RegExp) 是一种用特殊符号编写的模式,描述一个或多个文本字符串.使用正则表达式匹配文本的模式,这样脚本就可以轻松的识别和操作文本.其实,正则表达式是值得大家花时间学习的.正则表达式不仅在javaScript 中有用,在其他许多地方也可以使用正则表达式,例如其他编程语言(比如Perl,Java,C#,Python 和PHP ),Apache 配置文件以及BBEdit 和TextMate 等文本编辑器.甚至Adobe Dreamwe

LeetCode 10 Regular Expression Matching (正则表达式匹配)

翻译 实现支持"."和"*"的正则表达式匹配. "." 匹配支持单个字符 "*" 匹配零个或多个前面的元素 匹配应该覆盖到整个输入的字符串(而不是局部的). 该函数的原型应该是: bool isMatch(const char * s, const char * p) 示例: isMatch("aa","a") → false isMatch("aa","a