`

匹配用户名的正则表达式

阅读更多
这个表达式非常简单,可是在你想为一个站点建立用户注册系统的时候确实非常有价值。为了开发上的简便,我们通常希望把用户起名字能用的字符限制在一个有限的集合里(比如一些敏感的字眼或者可能用来做注入攻击的名字,象delete这种都不能允许),同时我们还要防止有的人恶意冒用别人的用户名(比如一个用户叫Bill Gates,另一个人起名叫Bill Gates,区别只是两个单词见多了一个空格,当然也可能是换行符这种不可见字符,它们在浏览器里面看上去就象同一个人)。

要是不用正则表达式的话,这个检查会是一个乏味的劳动—先把字符串切割成独立的单词,再一个个检查每个单词的合法性。如果使用正则表达式,就会变成一个很轻松的事情。首先,让我们定义我们想接受的用户名,为了简单起见,我们的示例被限制为只接受下面的条件:

1. 字母数字字符(英文字母和数字)

2. 下划线(_)

与此同时,我们还强制用户名最短3个字符最长不超过16个字符。下面就是符合上述描述条件的正则表达式:
/[a-zA-Z0-9_]{3,16}/

如果你非常熟悉正则表达式的话,你会发现这个表达式好像缺了一些东西。不用着急,接下去我会讲到。

如果你读过我前面一篇正则表达式的入门文章,你可能已经分析出这个表达式如何工作了。首先,我们定义一个字符分类,它将匹配任何字母(a到z以及A到Z)和任何数字(0到9),以及_ (下划线)字符。下面接着一个数量范围,它告诉解析引擎我们只接受3到16个之间的字符数量。因为这个数量是指整个字符分类包括的所有字符而不是一个特定的字符,所以这个数量范围跟在字符分类后面。这个表达式将匹配所有长度在3到16之间,由我们的受限字符集里面字符构成的字符串。

那么到底缺了什么?由于我们写的表达式是匹配一个字符串的任何部分。它将不止认为‘mike_84′是合法字符串,同样也会匹配类似‘%! mike_84&’这种包含了我们不希望出现的东西的字符串。我们需要用到行定位点, ^ (caret) 和 $ (dollar) 字符将把我们的表达式限制在一个字符串的起点和终点位置,这样可以确保整个用户名符合我们的设定,而不是一部分。

所以修订版的正则表达式象这样:
/^[a-zA-Z0-9_]{3,16}$/


分享到:
评论

相关推荐

    正则表达式大全.docx

    正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换操作。它由特殊字符(称为“元字符”)和普通字符组成,能够灵活地定义要查找的模式。以下是一些常见的正则表达式模式及其用途: 1. ...

    常用正则表达式大全.txt

    正则表达式是一种用于文本模式匹配的强大工具。通过定义一组规则来识别文本中的特定模式,正则表达式被广泛应用于各种场景,如数据验证、搜索替换等。 ### 数字验证 1. **纯数字验证**:只允许输入纯数字。 - ...

    只验证数字和字母的正则表达式

    在这个函数中,首先通过 `document.getElementById` 获取用户名和密码的值,然后使用正则表达式进行匹配测试。如果测试结果为真,则返回 `true` 表示用户名格式正确;否则,返回 `false` 并提示用户输入不符合要求的...

    正则表达式列举 代码 项目中直接使用

    正则表达式是一种强大的文本处理工具,用于模式匹配、搜索、替换等操作,在软件开发、数据处理、网络爬虫等领域有着广泛的应用。在项目中直接使用正则表达式可以极大地提高代码的效率和可读性。以下是对给定文件中的...

    jq非空验证,js正则表达式验证邮箱和手机号码

    JavaScript正则表达式是用于匹配字符串模式的强大工具。在验证邮箱和手机号码时,我们需要创建符合特定规则的正则表达式。对于邮箱验证,通常的正则表达式如下: ```javascript var emailRegex = /^[a-zA-Z0-9._%...

    正则表达式 Java 判断字串是否合理

    正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换等操作符合某种规则的字符串。在Java中,通过`java.util.regex`包提供了对正则表达式的支持。 ### 2. 邮箱地址验证 在实际应用中,经常需要...

    java正则表达式使用例子

    `[\\w-\\.]+`用于匹配用户名部分,`@`是电子邮件的分隔符,后面的括号和点号组合用于匹配域名,最后的`[\\w-]{2,4}`用于匹配顶级域名,通常为2到4个字母。 接下来,你可以使用`Matcher`类来验证字符串: ```java ...

    正则表达式在程序开发中的应用

    正则表达式在程序开发中的应用十分广泛,无论是简单的字符串匹配还是复杂的文本处理,都能够提供极大的便利。通过上述介绍,我们可以看到正则表达式不仅能够提高代码的可读性和维护性,还能够简化许多常见的编程任务...

    正则表达式学习课件PPT

    在实际应用中,正则表达式常用于输入验证,例如检查用户名是否只包含字母和数字,或者检查密码是否满足特定强度要求。在数据分析中,它可以用来从大量文本中提取特定信息,如日期、电话号码或URL。 本课件的PPT部分...

    100个常用正则表达式

    正则表达式(Regular Expression)是用于匹配字符串模式的一种语法,广泛应用于文本处理、数据验证、数据提取等领域。以下是对一些常见的正则表达式的详细解释: 1. 匹配中文字符:`[u4e00-u9fa5]` 这个正则表达式...

    常用正则表达式(经验积累)

    根据提供的标题、描述以及部分内文,我们可以整理出一系列与正则表达式相关的知识点,这些知识点主要涵盖了在软件开发过程中常见的验证和匹配需求。 ### 常用正则表达式 #### 1. 匹配中文字符 **正则表达式**: `[\...

    精通正则表达式(第三版).pdf

    正则表达式是一种用于匹配字符串中字符组合的模式。它可以用来搜索、替换或提取文本中的特定模式。正则表达式的灵活性和强大功能使其成为处理大量文本数据时不可或缺的工具之一。 ### 正则表达式的基本语法 正则...

    正则表达式详细教程.pdf

    正则表达式可以用来验证用户名是否符合规则,例如验证用户名只能包含小写字母、数字、下划线和连字符,并且限制用户名长度在3~15个字符之间。 compile 函数: compile 函数是将正则表达式转换为模式对象,这样...

    正则表达式大全.txt

    通过定义一种由字符和特殊符号组成的语言,正则表达式能够精确地匹配文本中的模式。 ### 基本符号解释 在深入探讨具体的正则表达式之前,我们先来了解一下正则表达式中常用的几个基本符号: - `^`:表示字符串的...

    java 银行卡 验证 正则表达式使用

    在Java编程语言中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作。在"java 银行卡 验证 正则表达式使用"这个主题中,我们将深入探讨如何利用正则表达式进行银行卡、手机号码和邮箱以及URL地址的...

    最全的常用正则表达式大全

    ### 正则表达式知识点详解 #### 一、校验数字的正则表达式 **1.1 数字** - **表达式:** `^[0-9]*$` - **解释:** 匹配任意数量(包括0个)的数字。 - **应用场景:** 用于验证输入是否全为数字。 **1.2 n位的数字**...

    各类正则表达式(完整)

    ### 正则表达式知识点详解 #### 一、正则表达式基础介绍 正则表达式(Regular Expression),简称regex或regexp,是一种用于处理字符串的强大工具。它通过一系列简短的符号组合,来描述和匹配一系列符合某个复杂...

Global site tag (gtag.js) - Google Analytics