RegExp类型
概述
- 正则表达式时什么
正则表达式(Regular Expression):由一些普通字符和特殊字符组成的,用以描述一种特定的字符规则的表达式。
正则表达式常用于在一段文本中搜索,匹配或替换特定形式的文本。如:词语出现频率统计,验证字符串是否符合邮箱格式,屏蔽一篇帖子中限制性的词语等
- 创建正则表达式
JavaScript中没有正则表达式数据类型,创建正则表达式的语句如下:
var expression =/pattern/attributes;
pattern参数:被称为模式,可以时任何简单或复杂的正则表达式,包含字符类,限定符,分组,向前查找已经反向应用。
attribures参数:被称为修饰符,用于表明正则表达式的行为。
##符号
- 直接量字符
正则表达式中的所有字母和数字都是按照字面含义进行匹匹厄的。JavaScript正则表达式语法也是支持非字母的字符匹配,这些字符需要通过反斜线()作为前缀进行转义。
O 匹配NULL字符,不要再这后面跟其他的小鼠
t匹配一个水平制表符。
n匹配一个换行符。
v 匹配一个垂直制表符。
R匹配一个回车符。
f匹配一个换页符。
xhh 匹配带有两位小数代码(hh)的字符
uhhh 匹配一个带有四位小数代码(hh)的字符
- 字符类
将直接量字符单独放进方括号内就组成了字符类。一个字符类可以匹配它所包含的任意字符。由于某些字符类非常常用,JavaScript的正则表达式中,使用特殊转义字符表示他们。
[...] 一个字符集合。匹配放阔号任意字符。你可以使用破折号
(-)来制定。由于某些字符范围。对于点
(.)和信号(*)这样的特殊字符再一个字符集中没有特殊的意义。
1 一个反向的字符集。
. (小数点)匹配除了换行符(n)之外的任何单个字符
w 匹配一个单子字符(字母,数字,或者下划线)。等价于[A-Za-z0-9]
W匹配一个非单字字符。
s匹配一个空白字符,包括空格,制表符,换页符和换行符。
S匹配一个非空白字符。
d匹配一个数字, 等价于【0-9】
D匹配一个非数组字符。等价于2;
- 重复
再JavaScript中的正则表达式用来描述任意多为的数字,或者描述由三个字母和一个数字构成的字符串时,可以使用字符重复的标记。
{n,m} n和m都是正整数。匹配前面的字符至少n次,做多m次。如果n或者m是0那么可以或略这个值
{n}n是一个正整数,匹配了前面一个字符刚好发生了n次。
{n}n是一个正整数,匹配了有一个正整数,匹配了前面一个字符放生了n次或者更多次。
? 匹配前面一个字符0或者1次和{0,1}有相同的效果。
- 匹配前面一个字符1次或者多次,和{1,}有相同的效果。
- 匹配签一个字符0或者多次。
注意:‘*’ ‘?’可以匹配0个字符,允许什么都匹配
- 选择,分组,引用
正则表达式包括指定选择项,子表达式分组和引用前一子表达式的特殊字符。
x|y 匹配‘x’或者‘y’。
(x) 匹配“x”并且记住匹配项。这个被叫做捕获括号。
(?.x) 匹配“x”但是不记住匹配项。这种被叫做非捕获括号。
n 是一个正整数,一个返回引用到最后一个于有n插入的正值表达式(counting left parentheses)匹配的副字符串。
- 指定匹配位置
正则表达式中的多个元素才能够匹配字符串的一个字符,这些元素称之为正则表达式的锚。因为他们将模式定位在搜索字符串的特定位置上。
^ 匹配输入的开始 。如果多行标识被设置为true,同时匹配换行后紧跟的字符
$ 匹配输入的结束,如果多行标识被设置为ture,同时会匹配换行之前紧跟的字符
b 匹配一个词的边界。一个词的边界就是一个词不被另外一个次跟随的位置或者不是另外一个词汇字符前边的位置。
B 匹配一个非单词的边界
X(?=y) 匹配‘x’仅仅当‘x’后面跟着‘y’。这种叫做正向肯定查找。
x(?!y) 匹配‘x’仅仅当‘x’后面不跟着y,这个叫做正向否定查找。
- 修饰符
正则表达式的修饰符,用于说明高级匹配的规则。修饰符是放在‘/’符号的后面的。JavaScript支持的三个修饰符。
i 不区分大小写
g 全局搜索
m 多行搜搜
- 对象
创建RegExp对象
JavaScript可以通过引用类型RegExp创建正则表达式对象,语法如下:
var pattern =new RegExp(pattern,attributes);
参数:
pattern:被称之为模式,可以是任何简单或复杂的正则表达式,包含字符类,限制类,分组,向前查找以及反向引用。
attributes:被称之为修饰符,用于表明正则表达式的行为。
- RegExp对象的属性
RegExp对象的属性如下:
global 只读 RegExp对象是否具有g修饰符。
ignorecase 只读RegExp对象是否具有i修饰符。
multiline 只读RegExp对象是否具有m修饰符。
lastindex 用于设置获取下次匹配的其实位置。
source 只读 返回模式匹配所使用的问题。
$1...$9 全局属性 指代最近一次搜索中某个子表达式匹配的问题。
- RegExp对象的方法
RegExp对象的方法如下:
compile() 编译/重新编译正则表达式,将pattern转换为内部格式,加速执行速度。
exec() 检索字符串中指定的值。返回找到的值,并确定其位置;影响lastindex属性的值。
test() 检索字符串指定的值。返回ture 或false;影响lastindex属性的值。
Strsing类型
概述
- 字符串是什么
String类型是于原始类型string对应的包装类型。创建String对象如下代码:
var strObject = new String ('this is string');
string 类型于String 类型之间的区别:
使用typeof运算符,string 类型返回‘string’,String类型返回'object'。
String类型提供了很多属性和方法可以使用。例如检索字符串,分割字符换行等操作
常见操作
- 大小写转换
String对象提供如下放方法,用于大小写转换。
toUppercase() 把字符串转换为大写。
toLowercase() 把字符串转换为小写。
var =msg = 'Hello World';
var lowerMsg =msg.tolowercase();
var upperMsg =msg.toUppercase ();
console.log(msg);//Hello World
console.log(LoweMsg);//hello world
console.log(upperMsg);//HELLO WORLD
- 获取指定位置的字符串
String对象提供如下方法。用于获取指定位置的字符。
charAr() 返回再指定位置的字符。
charCodeAt() 返回在指定的位置的字符的Unicode编码。
var str = 'HELLO WORLD';
console.log(str.charAt(2));//L
console.log(str.charCode(0));72
- 检索字符串
String对象提供如下方法,用于检索字符串。
indexOf()返回某个指定的字符串值在字符串中首次出现的位置。
lastindexOf()从后向前字符串。
var email ='tom@163@sohu.com';
console.log(email.indexOf('tom'));//0
console.log(email.indexOf('@',5))//7
console.log(email.lastIndexOf('@'))//7
console.log(smail.lastIndexOf('@',5))//3
console.log(email.indexOf('Mary'));/-1
截取子字符串
String对象提供如下方法,用于截取子字符串。
slice() 提取字符串的片段,并在新的字符串中返回被提取的部分。
substr() 从其实索引号提取字符串中指定书目的字符。
substring() 提取字符串中的两个指定的索引号之间的字符。
var msg = 'abc一二三';
console.log(msg.slice(2,4));//c一
console.log(msg.substring(2,4))//c一
console.log(msg.substr(2,1))//c
console.log(msg.slice(-3,-2));//一
- 分隔字符串
string对象提供如下方法,用于分隔字符串。
split() 把字符串分割为字符串数组。
var str ='1,2,3,4';
str,split('');//['1','2','3','4,'];
str.split('',3);//['1','2','3','4'];
- 连接字符串
String对象提供了如下方法,用于连接字符串。
concat() 连接两个或者更多字符串,并返回新的字符串。
var s1 ='AA';
var s2= s1.concat('BB','CC',55);
console.log(s1);AA
console.log(s2);//AABBCC55
模式匹配
- 修饰符
模式匹配中可以使用如下三种属性修饰符:
i ignorecase,执行对大小写不敏感的匹配。
g global, 执行全局匹配(查找所有匹配而不是在第一次匹配之后停止)。
m multiline,允许执行多行匹配。
- 替换子字符串
String对象提供如下方法,用于替换子字符串。
replce()在字符串中查找匹配的子串,并替换于正则表达式匹配的字串。
var = data =Microsoft is a big company ,microsoft's color is red and has MICROSOFT logo lick microsoft';
console.log (data.replace('microsoft','oracle'));
console.log(data.replace(/microsoft/,'oracle'));
console.log(data.replace(/microsoft/i,oracle));
console.log(data.replace(/microsoft/ig,oracle));
- 匹配字符串
String对象提供了如下方法,用于匹配字符串。
match() 查找找到一个或多个正则表达式的匹配。
var = data =Microsoft is a big company ,microsoft's color is red and has MICROSOFT logo lick microsoft';
console.log(data.match('microsoft'))
console.log(data.match(/microsoft/));
console.log(data.match(/microsoft/i);
console.log(data.match(/microsoft/ig));
- 查找字符串
String对象提供如下方法,用于查找字符串
search 查找于正则表达式向匹配的值。
var = data =Microsoft is a big company ,microsoft's color is red and has MICROSOFT logo lick microsoft';
console.log(data.search)(/'microsoft'/);
console.log(data.search)(/'microsoft'i)/;
console.log(data.search)(/'microsoft'/ig);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。