正则表达式
正则表达式对象语法参数有以下部分: _________________________________________________________________ 参数部分|描述 ------------------------------------------------------------------- pattern|必需的。要使用的正则表达式模式,例如使用替换方法replace |时,就是要替换的文本。 |语法1,用"/"字符分隔模式。 |语法2,用引号将模式引起来。 ------------------------------------------------------------------- switch|可选项。语法2要用引号将switch引起来。可选的开 |关选项有: |i(忽略大小写) |g(全文查找出现的所有pattern) |gi(全文查找、忽略大小写) ------------------------------------------------------------------- 语法1当预先知道查找字符串时用 语法2当查找字符串经常变动或不知道时用,比如由用户输入得到的字符串。 在使用前pattern参数被编译为内部格式。 对语法1来说,pattern在该脚本被装载时被编译。 对语法2来说,pattern在使用前,或调用compile方法时被编译。 正则表达式的语法表: 字符|描述 ---------------------------------------------------------------- \|标记下一个字符是特殊字符或文字。例如,"n"和字符"n"匹配。 |"\n"则和换行字符匹配。序列"\\"和"\"匹配,而"\("则 |和"("匹配。 ---------------------------------------------------------------- ^|匹配输入的开头。 ---------------------------------------------------------------- $|匹配输入的末尾。 ---------------------------------------------------------------- *|匹配前面的子表达式零或多次。例如,"zo*"与"z"或"zoo"匹配。等价于{0,} ---------------------------------------------------------------- +|匹配前面的子表达式一次或多次。例如,"zo+"与"zoo"匹配,但和"z" |不匹配。 ---------------------------------------------------------------- ?|匹配前一个字符零或一次。例如,"a?ve?"和"never"中的"ve"匹 |配。 ----------------------------------------------------------------- .|匹配除换行字符外的任何单个字符。 ----------------------------------------------------------------- (pat-|匹配pattern并记住该匹配。匹配上的子字符串,可以使用Item tern)|[0]...[n],来从生成的Matches集合中取回。要匹配圆括号字 |符(),则需使用"\("或"\)"。 ----------------------------------------------------------------- x|y|匹配x或y。例如,"z|food"和"z"或"food"匹配。"(z|f) |ood"匹配"zoo"或"food"。 ----------------------------------------------------------------- {n}|n是非负整数。共匹配n次。例如,"o{2}"和"Bob"中的"o"不匹 |配,但和"foooood"中的前两个o匹配。 ----------------------------------------------------------------- {n,}|n是一个非负整数。至少匹配n次。例如,"o{2,}"和"Bob"中 |的"o"不匹配,但和"foooood"中的所有o匹配。"o{1,}" |与"o+"等效。"o{0,}"和"o*"等效。 ----------------------------------------------------------------- {n,m}|m和n是非负整数。至少匹配n次而至多匹配m次。例如,"o |{1,3}"和"fooooood"中的前三个o匹配。"o{0,1}"和"o?"等 |效。 ----------------------------------------------------------------- [xyz]|字符集合。匹配括号内的任一字符。例如,"[abc]"和"plain"中 |的"a"匹配。 ----------------------------------------------------------------- [^xyz]|否定字符集合。匹配非括号内的任何字符。例如,"[^abc]" |和"plain"中的"p"匹配。 ----------------------------------------------------------------- [a-z]|字符范围。和指定范围内的任一字符匹配。例如,"[a-z]"匹配"a" |到"z"范围内的任一小写的字母表字符。 ----------------------------------------------------------------- [^m-z]|否定字符范围。匹配不在指定范围内的任何字符。例如,"[m-z]"匹配不 |在"m"到"z"范围内的任何字符。 ----------------------------------------------------------------- \b|匹配字的边界,也就是说,在字和空格之间的位置。例如,"er\b" |和"never"中的"er"匹配,但和"verb"中的"er"不匹配。 ----------------------------------------------------------------- \B|匹配非字边界。"ea*r\B"和"neverearly"中的"ear"匹配。 ----------------------------------------------------------------- \d|匹配数字字符。等价于[0-9]。 ----------------------------------------------------------------- \D|匹配非数字字符。等价于[^0-9]。 ----------------------------------------------------------------- \f|匹配换页字符。 ----------------------------------------------------------------- \n|匹配换行字符。 ----------------------------------------------------------------- \r|匹配回车符字符。 ----------------------------------------------------------------- \s|匹配任何空白,包括空格、制表、换页等。与"[\f\n\r\t\v]"等效。 ----------------------------------------------------------------- \S|匹配任何非空白字符。与"[^\f\n\r\t\v]"等效。 ----------------------------------------------------------------- \t|匹配制表字符。 ----------------------------------------------------------------- \v|匹配垂直制表符。 ----------------------------------------------------------------- \w|匹配包括下划线在内的任何字字符。与"[A-Za-z0-9_]"等效。 ----------------------------------------------------------------- \W|匹配任何非字字符。与"[^A-Za-z0-9_]"等效。 ----------------------------------------------------------------- \num|匹配num,其中num是一个正整数。返回记住的匹配的引用。例 |如,"(.)\1"匹配两个连续的同一字符。 ----------------------------------------------------------------- \n|匹配n,其中n是八进制换码值。八进制换码值必须是1、2、或3位 |长。例如,"\11"和"\011"都匹配制表字符。"\0011"和"\001" |&"1"是等效的。八进制换码值必须不超过256。如果超过了,则只有 |前两位组成表达式。允许在正则表达式中使用ASCII码。 ----------------------------------------------------------------- \xn|匹配n,其中n是十六进制换码值。十六进制换码值必须正好是两位 |长。例如,"\x41"与"A"匹配。"\x041"和"\x04"&"1"是等效 |的。允许在正则表达式中使用ASCII码。 常用正则表达式 1。^\d+$ //匹配非负整数(正整数+0) 2。^[0-9]*[1-9][0-9]*$ //匹配正整数 3。^((-\d+)|(0+))$ //匹配非正整数(负整数+0) 4。^-[0-9]*[1-9][0-9]*$ //匹配负整数 5。^-?\d+$ //匹配整数 6。^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数+0) 7。^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数 8。^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配非正浮点数(负浮点数+0) 9。^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数 10。^(-?\d+)(\.\d+)?$ //匹配浮点数 11。^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 12。^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 13。^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 14。^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 15。^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串 16。^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址 17。^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url 18。匹配中文字符的正则表达式:[\u4e00-\u9fa5] 19。匹配双字节字符(包括汉字在内):[^\x00-\xff] 20。应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;} 21。匹配空行的正则表达式:\n[\s|]*\r 22。匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/ 23。匹配首尾空格的正则表达式:(^\s*)|(\s*$) 正则表达式用例 *1、^\S+[a-zA-Z]$不能为空不能有空格只能是英文字母 *2、\S{6,}不能为空六位以上 *3、^\d+$不能有空格不能非数字 *4、(.*)(\.jpg|\.bmp)$只能是jpg和bmp格式 *5、^\d{4}\-\d{1,2}-\d{1,2}$只能是2004-10-22格式 *6、^0$至少选一项 *7、^0{2,}$至少选两项 *8、^[\s|\S]{20,}$不能为空二十字以上 *9、^\+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(\.|\-))+[a-z]{2,6}$邮件 *10、\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*输入多个地址用逗号或空格分隔邮件 *11、^(\([0-9]+\))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628 *12、^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+(\,[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+)*$ *只能是字母、数字、下划线;必须有@和.同时格式要规范邮件 *13^\w+@\w+(\.\w+)+(\,\w+@\w+(\.\w+)+)*$上面表达式也可以写成这样子,更精练。 14^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$ |