-
字符串对象方法 1.search String.prototype.search(reg) search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串 方法返回第一个匹配结果 index,查找不到返回 -1 search()并不执行全局匹配,它将忽略标志 g ,并且总是从字符串的开始进行检索 例子: 'A11B2C3D4'.search(/\d/) 1 2.match String.prototype.match(reg) match()方法将检索字符串,以找到一个或多个与RegExp匹配的文本 RegExp是否具有标志 g 对结果影响跟大 非全局调用,即没有 g 如果RegExp没有标志 g,那么 match()方法就只能在字符串中执行一次匹配 如果没有找到任何匹配的文本,将返回null 否则它将返回一个数组,其中存放了与它找到的匹配文本有关的信息 返回数组的第一个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本 除了常规的数组元素之外,返回的数组还含有2个对象属性 index 声明匹配文本的起始字符在字符串的位置 input 声明对 stringObject的引用 全局调用 如果RegExp具有标志 g,则match()方法将执行全局检索,找到字符串中的所有匹配子字符串 没有找到任何匹配的子串,则返回null 如果找到了一个或多个匹配的子串,则返回一个数组 数组元素中存放地字符串中所有的匹配子串,而且也没有index 属性或input属性 3.replace String.prototype.replace(str,replaceStr) String.prototype.replace(reg,replaceStr) String.prototype.replace(reg,function) function参数含义 function会在每次匹配替换的时候调用,有四个参数 匹配字符串 正则表达式分组内容,没有分组则没有该参数 匹配项在字符串中 index 原字符串查看全部
-
地址:
https://regexper.com/
https://github.com/javallone/regexper-static
ls:查看文件目录
find ./ -name*.txt 在当前目录中查找所有的txt文件
*代表0到多个或任意字符
.点代表任意字符,可以是中文英文数字或特殊符合
?表示0个或1个
+表示1个或多个
^表示开始;
$表示结束;
\b 匹配单词边界
\转义字符
( )分组,$1-9按顺序引用分组
\d数字
{ }个数
[ ] 或
匹配日期格式正则:
^(\d{4})[/-](\d{2})[/-](\d{2})$
2019-01-01或2019/01/10
查看全部 -
RegExp.prototype.test(str):用于测试字符串参数中是否存在匹配正则表达式模式的字符串,存在返回true,否则返回false
var reg2=/\w/g;
进行reg2.test('ab')时,第三次会变成false
原因:while(reg2.test('ab')){
console.log(reg2.lastIndex);
}
即进行test时,正则表达式的lastIndex会发生变化
输出:1 2 表示第一个匹配上了、第二个匹配上了
RegExp.prototype.exec(str):使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果
如果没有匹配则返回null,否则返回一个结果数组:index声明匹配文本的第一个字符的位置,input存放被检索的字符串string
非全局调用:
调用非全局的RegExp对象的exec()时,返回数组
第一个元素是与正则表达式相匹配的文本
第二个元素是与RegExpObject的第一个子表达式(分组)相匹配的文本
第三个元素是与RegExp对象的第二个子表达式(分组)相匹配的文本
以此类推
查看全部 -
正则表达式由两种基本字符类型组成 1.原义文本字符:代表它原来含义的字符 例如:abc、123 2.元字符:在正则表达式中有特殊意义的非字母字符 例如:\b表示匹配单词边界,而非\b 在正则表达式中具体特殊含义的字符:* + ? $ ^ . \ () {} [] 元字符: \t:水平制表符; \v:垂直制表符; \n:换行符; \r:回车符; \0:空字符; \f:换页符; \cX:与X对应的控制字符查看全部
-
对象属性
global:是否全文搜索,默认false
ignore case:是否大小写敏感,默认是false
multiline:多行搜索,默认值是false
lastIndex:当前表达式匹配内容的最后一个字符的下一个位置
source:正则表达式的文本字符串
不能直接修改
查看全部 -
没怎么看懂,尤其是后两节。查看全部
-
正则表达式本身的两个方法 1.test RegExp.prototype.test(str) 用于测试字符串参数中是否存在匹配正则表达式模式的字符串,如果存在则返回true,否则返回false lastIndex 记录当前匹配结果的、最后一个字符的、下一个字符的位置 注意:test()方法在匹配的时候当匹配到一个结果时,会从lastIndex位置开始匹配下一个结果,直到不存在的时候才置为0。因此,当使用全局g属性标识时,当匹配到最后一个结果时,lastIndex值指向不存在的位置,此时再执行test()会返回false。 例子:多次执行test()方法,会在true、false之间循环 (/\w/g).test('a')每次执行都是正确的,但是通过实例化对象,需要很大的开销 test()方法:原意就是测试有没有、能不能匹配上,当使用test原意时,没必要加g 2.exec RegExp.prototype.exec(str) 使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性一反映匹配结果 如果没有匹配的文本则返回 null,否则返回一个结果数组: - index 声明匹配文本的第一个字符位置 - input 存放被检索的字符串 string 非全局调用 调用非全局的RegExp对象的 exec()时,返回数组 第一个元素是与正则表达式相匹配的文本 第二个元素是与RegExpObject的第一个子表达式相匹配的文本(如果有的话) 第三个元素是与RegExp对象的第二个子表达式相匹配的文本(如果有的话),以此类推查看全部
-
预定义类 正则表达式提供了 预定义类 匹配常见的字符类 . 等价于 [^\r\n] 表示除了回车符和换行符之外的所有的字符 \d 等价于 [0-9] 数字字符 \D 等价于 [^0-9] 非数字字符 \s 等价于 [\t\n\x0B\f\r] 空白符 s:space \S 等价于 [^\t\n\x0B\f\r] 非空白符 \w 等价于 [a-zA-Z_0-9] 单词字符(字母、数字下划线) w:word \W 等价于 [^a-zA-Z_0-9] 非单词字符 提示:大写的表示取反 例子: 匹配一个 ab+数字+任意字符 的字符串 使用范围类:ab[0-9][^\r\n] 使用预定义类:ab\d. 常见的边界匹配字符: ^ 以XXX开始 $ 以XXX结束 \b 单词边界 \B非单词边界 例子: 1. '@123@abc@'.replace(/^@./g,'Q'); "Q23@abc@" 2.'@123@abc@'.replace(/.@$/g,'Q'); "@123@abQ" 3.'@123@abc@'.replace(/.@/g,'Q'); "@12QabQ"查看全部
-
正则表达式的两种方法: 1.字面量 var b=/\bam\b/; alert( "i am lily".replace(b,'AM')); //i AM lily 2.构造函数 var reg=new RegExp(/\bis\b/); alert("she is beautiful".replace(reg,"is not")); // she is not beautiful查看全部
-
正则表达式语法
---- \b: 单词边界,可用于搜索单个单词
---- . 任意字符, * 任意个字符, + 至少一个字符,
---- 用括号圈住的一部分可以分组,第一个括号内的为分组 $1,里面内容可以直接被引用
---- 日期替换
\d{4}: 四个数字
[/-]: / 或者 -
^(\d{4)[/-](\d{2})[/-](\d{2})$
$1 $2 $3查看全部 -
字符串对象方法
stringl.protatype.search(reg)
search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
方法返回第一个匹配结果index,查找不到返回-1
search()方法不执行全局匹配,它将忽略标志g,并且总是从字符串开始进行检索
string.prototype.match(reg)
match()方法将检索字符串,以找到一个或多个与regexp匹配的文本
regexp是否具有标志g对结果影响很大
非全局调用:如果regexp没有标志g,那么match()方法就只能在字符串中执行一次匹配,没找到任何匹配文本将返回null,否则将返回一个数组,其中存放了与它找到的匹配文本有关的信息:返回数组的第一个元素存放的是匹配文本,而其余元素存放的是与正则表达式的子表达式匹配的文本。
除了常规数组元素之外,返回的数组还含有2个对象属性:index声明匹配文本的起始字符在字符串的位置;input声明对stringobject的引用
全局调用:如果regexp具有标志g则match()方法将执行全局检索,找到字符串中的所有匹配子字符串:没有找到任何匹配的子穿,则返回null,否则返回一个数组,数组元素中存放的是字符串中所有匹配子串,而且也没有index属性或input属性
查看全部 -
重要事项:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。查看全部
-
正则表达式exec()函数: exec() 方法用于检索字符串中的正则表达式的匹配。 返回值是一个数组,但是此数组的内容和正则对象是否是全局匹配有着很大关系: 1.没有g修饰符: 在非全局匹配模式下,此函数的作用和match()函数是一样的,只能够在字符串中匹配一次,如果没有找到匹配的字符串,那么返回null,否则将返回一个数组,数组的第0个元素存储的是匹配字符串,第1个元素存放的是第一个引用型分组(子表达式)匹配的字符串,第2个元素存放的是第二个引用型分组(子表达式)匹配的字符串,依次类推。同时此数组还包括两个对象属性,index属性声明的是匹配字符串的起始字符在要匹配的完整字符串中的位置,input属性声明的是对要匹配的完整字符串的引用。 特别说明: 在非全局匹配模式下,IE浏览器还会具有lastIndex属性,不过这时是只读的。 2.具有g修饰符: 在全局匹配模式下,此函数返回值同样是一个数组,并且也只能够在字符串中匹配一次。不过此时,此函数一般会和lastIndex属性匹配使用,此函数会在lastIndex属性指定的字符处开始检索字符串,当exec()找到与表达式相匹配的字符串时,在匹配后,它将lastIndex 属性设置为匹配字符串的最后一个字符的下一个位置。可以通过反复调用exec()函数遍历字符串中的所有匹配,当exec()函数再也找不到匹配的文本时,它将返回null,并把lastIndex 属性重置为0。 数组的内容结构和没有g修饰符时完全相同。 特别说明: 如果在一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把lastIndex属性重置为0。查看全部
-
RegExp.prototype.source 正则对象的源模式文本(RegExp 模式自身)。 let regex = /(\d{4}\1)-(\d{2})-(\d{2})/g; regex.source "(\d{4}\1)-(\d{2})-(\d{2})" regex.ignoreCase false regex.multiline false regex.sticky false regex.lastIndex 0 regex.global true regex.flags "g"查看全部
-
`2017-03-19`.replace(/[0-9-]/, `X`); "X017-03-19" `2017-03-19`.replace(/[0-9-]/g, `X`); "XXXXXXXXXX" `2017-03-19`.replace(/[0-9]/, `X`); "X017-03-19" `2017-03-19`.replace(/[0-9]/g, `X`); "XXXX-XX-XX"查看全部
举报