众果搜的博客

脚踏大地,仰望星空,致力于在线网络工具的开发与普及,以及其他思考

Search(博客搜索)

热文排行

最近发表

最新评论及回复

« 我没有恶意反应能力测试工具上线 »

正则表达式库(字符串格式校验第一部分)

这是字符串格式验证的第一部分,各位可以从中学习正则表达式的编写方法,看看匹配与不匹配的举例就会明白,可以在线进行测试。测试地址:http://www.zhongguosou.com/computer_question_tools/test_regex.aspx

 
表达式: ^\d{3}-\d{2}-\d{4}$
描述:此正则表达式将会匹配设备号码(美国)(SSN) ,格式为NNN-NN-NNNN.
匹配举例:333-22-4444 | 123-45-6789
不匹配举例: 123456789 | SSN
 
表达式: ^[a-zA-Z]$
描述: 匹配任何单一的大写或小写字母。
匹配举例: a | B | c
不匹配举例: 0 | & | AbC
 
表达式:(\w+)\s+\1
描述: 此表达式使用反向引用来寻找以空格分开的两个单词中出现一行中出现两次的单词。匹配像 'mandate dated'这样的。
匹配举例:hubba hubba | mandate dated | an annual
不匹配举例: may day | gogo | 1212
 
表达式: ^(\d{4}[- ]){3}\d{4}|\d{16}$
描述:信用卡卡号校验。检查16位四组格式的,以空个或-分开的卡号,或者连在一起的。.
匹配举例:1234-1234-1234-1234 | 1234 1234 1234 1234 | 1234123412341234
不匹配举例: Visa | 1234 | 123-1234-12345
 
表达式:^((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$
描述:匹配主要的信用卡如: Visa (长16, 以 4开头), Mastercard (长 16, 以 51-55), Discover (长 16, 以 6011开头), American Express (长 15, 以 34 或 37开头). 所有的以 16 位数字格式,可以有或没有(-)在四个一组的数字中间。 
匹配:6011-1111-1111-1111 | 5423-1111-1111-1111 | 341111111111111
不匹配: 4111-111-111-111 | 3411-1111-1111-111 | Visa
 
表达式: ^\s*[a-zA-Z,\s]+\s*$
描述:任何大写或小写字母组成,以逗号或空格分开的文本,空格的数量不限。
匹配:Smith, Ed | Ed Smith | aBcDeFgH
不匹配: a123 | AB5 | Mr. Ed
 
表达式: ^\d{9}[\d|X]$
描述:一个简单的ISBN 校验表达式 –它仅仅校验10位数字构成的,最后一位或许为X的ISBN号。
匹配:1234123412 | 123412341X
不匹配:不是一个isbn
 
表达式:(?:4\d{3})|(?:5[1-5]\d{2})|(?:6011)|(?:3[68]\d{2})|(?:30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$
描述:信用卡卡号校验。
匹配:6011567812345678 | 6011 5678 1234 5678 | 6011-5678-1234-5678
不匹配: 1234567890123456
 
表达式: "((\\")|[^"(\\")])+"
描述:匹配以引号引起的字符串,使用斜杠的字符串。
匹配“ "test" | "escape\"quote" | "\""
不匹配: test | "test | "test\"
 
表达式: ^([1-zA-Z0-1@.\s]{1,255})$
描述:通用字符串校验表达式,可以防止用户输入恶意字符代码,允许输入email地址,姓名,地址,密码等等。不允许输入斜杠 *等非法字符。
匹配:email@email.com | My Name | asdf12df
不匹配: ‘,\*&$<> | 1001' string
 
表达式:^([A-Z]{1}[a-z]{1,})$|^([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^$
描述:匹配首字母大写的以空格分开的字符串,也匹配空字符串。
匹配: Sacramento | San Francisco | San Luis Obispo
不匹配: SanFrancisco | SanLuisObispo | San francisco
 
表达式:(^|\s)(00[1-9]|0[1-9]0|0[1-9][1-9]|[1-6]\d{2}|7[0-6]\d|77[0-2])(-?|[\. ])([1-9]0|0[1-9]|[1-9][1-9])\3(\d{3}[1-9]|[1-9]\d{3}|\d[1-9]\d{2}|\d{2}[1-9]\d)($|\s|[;:,!\.\?])
描述: Incorporated other people's examples; removed extraneous parenthesis on 10/7/04. Currently the SSA site says 772 is the highest AREA number generated (http://www.ssa.gov/employer/highgroup.txt). Old expression was: (^|\s)\d{3}(-?|[\. ])\d{2}\2\d{4}($|\s|[;:,!\.\?]). Looks for either the beginning of a line or whitespace before the beginning of the social security number, then either zero or one hyphen OR one of a period or space, then uses the \3 to reference the value returned in the parenthesis that includes the -?|[\. ] (basically says if the first dash, period, or space is there, then the second one is required; and if the first dash, period, or space is not there, then the second one can't be either), and finally looks for the end of a line, whitespace, or punctuation characters after the social security number.
匹配:123-45-6789 | 123 45 6789 | 123456789
不匹配: 12345-67-890123 | 1234-56-7890 | 123-45-78901
 
表达式:<[^>]+>
描述:这个表达式用来查找所有的开闭标记,可很好的用于HTML或XML文档的标记清理。我用来清理HTML中的XML标记。我找出所有的标记,然后删除那些非标准的的标记。
匹配: <html> | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | <
不匹配: Any plain old text | http://www.regexlib.com/Add.aspx | xml>
 
表达式:^[0-9]{1,}(,[0-9]+){0,}$
描述:它可以校验html页面的格式输入(checkbox, optionbox, selectbox)等,尤其是一次输入多个数字值的时候,例如用户一次选择一个或更多的时候!
匹配: 1111 | 47,26,2,1,1111,12 | 25,1245,2122,23232
不匹配: 111, | 1a1,111,1212,23 | 11aa,aaa,asas,asa
 
表达式:^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*<>:\;|\"/]+$
描述:对保留字符进行检查,如 <> 和 "。
匹配:abc
不匹配: PRN
 
表达式:^([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?\.){0,}([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?){1,63}(\.[a-z0-9]{2,7})+$
描述: [注释:这个域名通过 Macromedia's ColdFusion MX测试.我肯定它工作于其他正则引擎时还需要额外的信息。]在找了一些正则表达式后,我发现没有一个可以完全的可靠的处理子域名或者顶级域名的正则表达式。因此,我写了一个,然后测试它。它不匹配如: -.domain.com, -a.domain.com, -domain.com, domain-.com, 以及在顶级域名前的字符数超过63个的域名。匹配: a.domain.com, a-a.domain.com, a--a.domain.com, a--defg.com, domain.co.uk.
匹配: 800-med-alert.com | jump.to | archive-3.www.regexlib.com
不匹配: example | a-.domain.com | http://regexlib.com/
 
表达式:^(?![0-9]{6})[0-9a-zA-Z]{6}$
描述:匹配一个六位的密码,并且其中至少含有一个字母。
匹配:123a12 | a12345 | aaaaaa
不匹配: 111111

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense

Copyright www.zhongguosou.com. Some Rights Reserved.