- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章RegExp 随笔 JavaScript RegExp 对象由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
概述 。
RegExp 的构造函数创建了一个正则表达式对象,用模式来匹配文本.
有关正则表达式介绍,请阅读JavaScript指南中的正则表达式章节.
语法 。
文字和构造符号是可能的: /pattern/flags new RegExp(pattern [, flags]) 。
参数 。
pattern 正则表达式的文本 flags 如果指定,标志可以具有以下值的任意组合:
g 全局匹配 i 忽略大小写 m 多行;让开始和结束字符(^ 和 $)工作在多行模式工作(例如,^ 和 $ 可以匹配字符串中每一行的开始和结束(行是由 \n 或 \r 分割的),而不只是整个输入字符串的最开始和最末尾处。 u Unicode。把模式当作Unicode代码点(code points)的序列。 y 黏度; 在目标字符串中,只从正则表达式的lastIndex属性指定的显示位置开始匹配(并且不试图从任何之后的索引匹配)。 描述 有两种方法可以创建一个正则对象:字面量和构造函数。要表示字符串,字面量形式不使用引号,而传递给构造函数的参数使用引号。下面表达式创建相同的正则表达式:
1
2
3
|
/ab+c/i;
new
RegExp(
'ab+c'
,
'i'
);
new
RegExp(/ab+c/,
'i'
);
|
当表达式被赋值时,字面量形式提供正则表达式的编译(compilation)状态,当正则表达式保持为常量时使用字面量。例如当你在循环中使用字面量构造一个正则表达式时,正则表达式不会在每一次迭代中都被重新编译(recompiled)。 而正则表达式对象的构造函数,如 new RegExp('ab+c') 提供了正则表达式运行时编译(runtime compilation)。如果你知道正则表达式模式将会改变,或者你事先不知道什么模式,而是从另一个来源获取,如用户输入,这些情况都可以使用构造函数。 从ECMAScript 6开始,当第一个参数为正则表达式而第二个标志参数存在时,new RegExp(/ab+c/, 'i')不再抛出TypeError (“当从其他正则表达式进行构造时不支持标志”)的异常,取而代之,将使用这些参数创建一个新的正则表达式.
当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:
1
2
|
var
re =
new
RegExp(
"\\w+"
);
var
re = /\w+/;
|
以字面量定义正则表达式 var expression = /pattern/ flags; pattern 部分可以是任何简单或复杂的正则表达示 flage 标明正则表达式的行为 1.g:全局模式,不会在发现第一个匹配项后停止 2.i:不区分大小写模式 3.m:多行模式 例:
1
2
3
|
var
pattern1 = /at/g;
//匹配字符串中所有at
var
pattern2 = /[bc]at/i;
//匹配第一个“bat”或“cat”,不区分大小写
var
pattern3 = /.at/gi;
//全局匹配以.at“结尾”的三个字符。不区分小写
|
模式中使用的所有元字符都必须转义。正则表达式中的元字符包括:([{\^$|?*+.}]) 例:
1
|
var
pattern4 = /\[bc\]at/i;
//匹配第一个“[bc]at”,不区分大小写
|
使用RegExp构造函数,接受2个参数,参数1:要匹配的字符串模式,参数2:可选的标志行为 例:
1
|
var
pattern5 =
new
RegExp(
"[bc]at"
,
"i"
);
|
注:因为RegExp构造函数的模式参数都是字符串,所以在某些情况下要对字符串进行双重转义。所有元字符必须双重转义 。
例: 字面量 等价字符串 /\[bc\]at/ "\\[bc\\]at" /\.at/ "\\.at" /name/\age/ "name\\/age" /\d.\d{1,2}/ "\\d.\\d{1,2}" /\w\\hello\\123/ "\\w\\\\hello\\\\123" 。
注:使用字面量和实例化创建正则表达式不一样,字面量始终会共享同一个RegExp实例(ECMAScript3)。使用构造函数创建的每一个新的RegExp实例都是一个新实例.
RegExp实例属性 。
1
2
3
4
5
|
console.log(pattern5.global); //false 是否设置了g标志
console.log(pattern5.ignoreCase); //true 是否设置了i标志
console.log(pattern5.multiline); //false 是否设置了m标志
console.log(pattern5.lastIndex); //0 开始搜索下一个匹配项的起始位置
console.log(pattern5.source); //[bc]at 正则表达式的字符串表示
|
继承属性 。
1
2
3
|
console.log(pattern5.toString()); // /[bc]at/i 正则表达式的字面量表示
console.log(pattern5.toLocaleString()); // /[bc]at/i 正则表达式的字面量表示
console.log(pattern5.valueOf()); // /[bc]at/i 正则表达式的字面量表示
|
RegExp实例方法 方法一:exec(),接受一个参数,既应用模式字符串。返回返回包含第一个匹配项信息的数组,在没有的情况下返回null,返回的数组实例包含两个属性index(匹配项在字符中的位置)和input(应用正则的字符串).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
var
text =
"huang jin liang shi ge hao ren"
;
var
pattern6 =
new
RegExp(
"huang( jin liAng( shi ge hao ren)?)?"
,
"i"
);
var
matches = pattern6.exec(text);
console.log(matches);
//[ 'huang jin liang shi ge hao ren',
// ' jin liang shi ge hao ren',
// ' shi ge hao ren',
// index: 0,
// input: 'huang jin liang shi ge hao ren' ]
var
text1 =
"cat, bat, sat"
;
var
pattern7 =
new
RegExp(
".at"
)
var
matches1 = pattern7.exec(text1);
console.log(matches1);
//cat
var
pattern8 =
new
RegExp(
".at"
,
"gm"
);
var
matches2 = pattern8.exec(text1);
console.log(matches2);
//cat
var
matches3 = pattern8.exec(text1);
console.log(matches3);
//bat
var
matches4 = pattern8.exec(text1);
console.log(matches4);
//sat
var
matches5 = pattern8.exec(text1);
console.log(matches5);
//null
|
方法二:test(),接受一个参数,既应用模式字符串。该模式与该参数匹配的情况下返回true,反之false 。
1
2
3
4
5
6
7
8
9
|
var
text2 =
"000-00-0000"
;
var
pattern9 =
new
RegExp(
"\\d{3}-\\d{2}-\\d{4}"
);
console.log(pattern9.test(text2))
console.log(text2);
if
(pattern9.test(text2)) {
console.log(
"匹配成功"
);
}
else
{
console.log(
"匹配失败"
);
}
|
构造函数属性(某些浏览器不支持) 长属性名 短属性名 说明 input $_ 最近一次要匹配的字符串 lastMatch $& 最近一次匹配项 lastParen $+ 最近一次捕获组 leftContext $` input字符串中lastMatch之前的文本 multiline $* 布尔,是否是多行模式 rightContext $' input字符串中lastMatch之后的文本 $1~$9 分别用于存储第几个捕获组 。
。
在ECMAScript局限性 1.匹配字符串开始和结束的\A和\Z锚 2.向后查找 3.并集和交集类 4.原子组 5.Unicode支持(单个字符除外) 6.命名捕获组 7.s和x匹配模式 8.条件匹配 9.正则表达式注释 。
刚发现一个js中匹配多行的方法 。
1
2
3
4
5
6
7
|
<script>
var
s =
"Please yes\nmake my day!"
;
alert(s.match(/yes.*day/));
// Returns null
alert(s.match(/yes[^]*day/));
// Returns 'yes\nmake my day'
</script>
|
可惜了,editplus不能用,很多时候还是使用dw比较方便.
最后此篇关于RegExp 随笔 JavaScript RegExp 对象的文章就讲到这里了,如果你想了解更多关于RegExp 随笔 JavaScript RegExp 对象的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!