javascript正则表达式学习笔记

来源:互联网 发布:淘宝推广是什么职位 编辑:程序博客网 时间:2024/04/30 04:43

/s$/ 匹配以字母"s"结尾的字符串

正则表达式语法通过反斜杠(/)开头的转义序列支持某些非字母的字符如"/n"为直接量换行符
常用的
/o NUL字符
/t 制表符
/n 换行符
/v 垂直制表符
/f 换页符
/r 回车

/xnn 十六进制指定的拉丁字符
/uxxxx
/cX

/[abc]/ 和字母"a","b","c"中的任何一个字母都匹配.
/[^abc]/和除字母"a","b","c"之外的所有字符匹配.
/[a-z]/ 匹配英文小写字母
/[a-zA-Z0-9]/ 匹配拉丁字母集中任何字母数字以及字符.

/w 任何ascii单字字符,等价于[a-zA-Z0-9_]
/W 任何ascii非单字字符,等价于[^a-zA-Z0-9_]
/s 匹配的是空格符(非Unicode空白符)
/S 任何非Unicode空白符,注意/w和/S不同
/d 任何ascii数字,等价于[0-9]
/D 除了ascii数字之外的任何字符,等价于[^0-9]
/[/b]/ 退格符

方框号内也可以用这些字符转义如
/[/s/d] 等同于任意的空白符或数字


/a-/ 匹配一个或多个字符 与aaa都配
/a+?/ 匹配一个或多个必要的字母a.该模式只匹配第一个字母a

 
/ab| cd| ef/ 匹配的是字符串"ab",或者是字符串"cd",又或者是字符串
"ef"
//d{3}|[a-z]{4}/ 匹配的是三位数字或四个小写字母
注意,选项是从左到右考虑,直到发现了匹配项,如果左边的选择项匹配
,就忽略了右边的匹配项.即使它产生更好的匹配.所以 /a|ab/ 就用到
"ab"上时,它只匹配第一个字符
/java(script)?/ 匹配的是字符串"java",后面既可以有"script",也可以没有
/(ab|cd)+|ef)/ 既可以是字符串"ef",也可以是字符串"ab"或者"cd"的
一次或多次重复

| 选择.匹配的是该符号左边的子表达式或右边的子表达式
(...) 组合.将几个项目组合为一个单元.

例:匹配"JavaScript"可以使用/^JavaScript$/
如想检索"Java" 可以使用 //sJava/s/ 要求在单字Java之前和之后都有空格
但这样有两个问题:1.如果Java位于开头或结尾时,不匹配
2.当找到与之匹配的字符串时,它返回的匹配字符串的前端和后端都有空格
因则我们可以://bJava/b/

 

元字符

+ 元字符规定其前导字符必须在目标.对象中连续出现一次或多次
*  元字符规定其前导字符必须在目标对象中出现零次或连续多次
?   规定其前导对象必须在目标对象中连续出现零次或一次

/fo+/
因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者
“football”等在字母f 后面连续出现一个或多个字母o 的字符串相匹配。
/eg*/
因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”
等在字母e 后面连续出现零个或多个字母g 的字符串相匹配
/Wil?/
因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 “Win”, 或者 “Wilson”,等在字
母i 后面连续出现零个或一个字母l 的字符串相匹配。

/jim{2,6}/
上述正则表达式规定字符m 可以在匹配对象中连续出现2-6 次,因此,上述正则表达式可以同jimmy 或
jimmmmmy 等字符串相匹配。
“^”定位符规定匹配模式必须出现在目标字符串的开头

“$”定位符规定匹配模式必须出现在目标对象的结尾
,/b 定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一

“/B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾


/^hell/
因为上述正则表达式中包含“^”定位符,所以可以与目标对象中以 “hell”, “hello”或
“hellhound”开头的字符串相匹配
/ar$/
因为上述正则表达式中包含“$”定位符,所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的
字符串相匹配。
//bbom/
因为上述正则表达式模式以“/b”定位符开头,所以可以与目标对象中以 “bomb”, 或 “bom”开头的
字符串相匹配。
/man/b/
因为上述正则表达式模式以“/b”定位符结尾,所以可以与目标对象中以 “human”, “woman”或
“man”结尾的字符串相匹配。


我们可以使用正则表达式的test 或者search 方法来发现字符中是否符合某个模式。比如:
var ResultFlag = forms[0].UserName.value.search(/[a-z]|[A-Z]/);
if (ResultFlag==-1){alert(表单中的UserName 没有包含任何字符!)};

 

工作中的新用法::
如:密码中不要包含三位重复的字符
if(document.forms[0].cipher1.value.search(/(/S)/1{2}/) != -1)
 {
  alert("密码中请不要包含三位重复的字符");
  bool=false;
  return bool;
 }

后面跟的/1是向后引用,就是引用前面括号内的内容
这个非常实用哦 

原创粉丝点击