正则表达式\w并不完全等于[A-Za-z0-9]

原文地址:http://blog.csdn.net/sinat_34719507/article/details/54430555

一般大家在书本上还是网上资料正则表达式中\w都被介绍为匹配任何单词字符,包括字母和下划线,等效于[A-Za-z0-9]。
   今天偶然间发现会员注册中出现了一个恶作剧账号"аdmin",注意到那个а了没?那是一个俄文字母,在会员注册过滤中使用\w验证并不能防止。
   也就是说\w包括了英文字母以及俄文字母等,在会员注册这块我们肯定不希望类同的账号出现,要不然很容易造成会员间的误会。所以改为^[A-Za-z0-9\u4E00-\u9FA5-]{2,16}$验证,只允许数字、26个英文字母大小写、中文及其组合。
   通过网络检测发现,目前的大部分网站账号基本有此误检测的BUG,DZ的不论PHP还是net版均存在此问题。想象一下吧,一个网站已存存在一个英文会员账号“admin”,再出现一个俄文或俄文英文混合的账号,如“аdmin”,够混淆混乱吧?

时间: 2024-12-22 10:24:58

正则表达式\w并不完全等于[A-Za-z0-9]的相关文章

正则表达式 \w \d 的意义

对于正则表达式,相信很多人都知道,但是很多人的第一感觉就是难学,因为看第一眼时,觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云. 其实只是对正则不了解而以,了解了你就会发现,原来就这样啊正则所用的相关字符其实不多,也不难记,更不难懂,唯一难的就是组合起来之后,可读性比较差,而且不容易理解,本文旨在让大家对正则有一个基本的了解,能看得懂简单的正则表达式,写得出简单的正则表达式,用以满足日常开发中的需求即可. 什么是正则表达式 正则表达式是一种特殊的字符串模式,用于匹配一组字符串

re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析

题目 计算以下代码的结果 s = "?!.18)dajslj$12.15613sdadw.123sdasda35615.168sndsda$15.6sdasd.sdfsdgw123.156s" p1 = re.compile("\w+\.\w+\d+\.+\d+") print(p1.findall(s)) p1 = re.compile("(\w+)\.(\w+)((\d+)\.+\d+)") print(p1.findall(s)) 答案 #

正则表达式常用操作符

^    匹配字符串开头      ^abc表示abc且在一个字符串的开头 $    匹配字符串结尾    abc$表示abc且在一个字符串的结尾 ( )   分组标记,内部只能使用 | 操作符    (abc)表示abc,(abc|def)表示abc.def \d   数字,等价于[0‐9] \w  单词字符,等价于[A‐Za‐z0‐9_]正则表达式语法由字符和操作符构成 .     表示任何单个字符 [ ]   字符集,对单个字符给出取值范围    [abc]表示a.b.c,[a‐z]表示a

re(正则表达式)模块

一.最常用的匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.splitall 以匹配到的字符当做列表分隔符 re.sub      匹配字符并替换 二.常用正则表达式符号 '.'      默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^'        匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","

js 正则表达式 转至(七郎's Blog)

//匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线 var re =new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,19}$"); if(re.test(aaaa)){alert("格式正确");}else{alert("格式错误");} var s_currency = /^([1-9][\d]{0,7}|0)(\.[\d]{1,2})?$/; if(!s_currency.test($("#

Python学习之路-装饰器&生成器&正则表达式

装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(func):     def inner():         if USER_TEMP["status"] == False:             print("\033[31;1m用户未登录,请先登录\033[0m")             login_atm()

8.模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p

Python3.5(十四)正则表达式

match和search的区别 Python提供了两种不同的原始操作:match和search.match是从字符串的起点开始做匹配,而search(perl默认)是从字符串做任意匹配. 注意:当正则表达式是' ^ '开头时,match与search是相同的.match只有当且仅当被匹配的字符串开头就能匹配 或 从pos参数的位置开始就能匹配 时才会成功.如下: 贪婪模式?,+,*,{m[,n]} >>> import re>>> m = re.search("

python网络爬虫与信息提取——6.Re(正则表达式)库入门

1.正则表达式常用操作符 .      表示任何单个字符[ ] 字符集,对单个字符给出取值范围    [abc]表示a.b.c,[a‐z]表示a到z单个字符[^ ]  非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字符*  前一个字符0次或无限次扩展     abc* 表示 ab.abc.abcc.abccc等+  前一个字符1次或无限次扩展     abc+ 表示 abc.abcc.abccc等?   前一个字符0次或1次扩展           abc? 表示 ab.a