正则表达式基础语法详解及在 JavaScript 和 C# 中的验证应用

雨后青山
雨后青山
发布时间:2026-10-14| 4人浏览过
原创

正则表达式是处理字符串匹配的强大工具。本文详解其核心语法规则,并结合 JavaScript 前端验证与 C# 后端验证的具体代码案例,演示如何实现高效的字符串格式校验,最后提供常用业务场景的正则模板。

什么是正则表达式

正则表达式(Regular Expression)是一种用于描述或匹配一系列符合句法规则的字符串的工具。它广泛应用于文本编辑器、数据处理软件以及各类程序设计语言中,主要用于检索、替换和处理符合特定模式的文本内容。

正则表达式的基础语法规则

掌握正则表达式的核心在于理解元字符、量词、分组及特殊符号的含义。以下是构建复杂匹配模式时必须了解的关键规则:

1. 基本锚点与数量控制

  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • *:匹配前面的子表达式零次或多次(等价于 {0,})。例如:zo* 能匹配 "z" 以及 "zoo"。
  • +:匹配前面的子表达式一次或多次(等价于 {1,})。例如:zo+ 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。
  • ?:匹配前面的子表达式零次或一次(等价于 {0,1})。例如:do(es)? 可以匹配 "do" 或 "does" 中的 "do"。
  • {n}:匹配确定的 n 次。例如:o{2} 不能匹配 "Bob" 中的 'o',但能匹配 "food" 中的两个 o。
  • {n,}:至少匹配 n 次。例如:o{2,} 能匹配 "foooood" 中的所有 o。
  • {n,m}:最少匹配 n 次且最多匹配 m 次。注意逗号两侧不能有空格。

2. 贪婪与非贪婪模式

当 ? 紧跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m})后面时,匹配模式变为非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认是贪婪模式(尽可能多地匹配)。例如,对于字符串 "oooo",o+? 将匹配单个 "o",而 o+ 将匹配所有 'o'。

3. 字符集合与范围

  • x|y:匹配 x 或 y。例如:z|food 能匹配 "z" 或 "food";(z|f)ood 则匹配 "zood" 或 "food"。
  • [xyz]:字符集合。匹配所包含的任意一个字符。例如:[abc] 匹配 "plain" 中的 'a'。
  • [^xyz]:负值字符集合。匹配未包含的任何字符。例如:[^abc] 匹配 "plain" 中的 'p'。
  • [a-z]:字符范围。匹配指定范围内的任意字符,如 [a-z] 匹配小写字母。
  • [^a-z]:负值字符范围。匹配不在指定范围内的字符。

4. 单词边界与空白字符

  • \b:匹配单词边界,即单词和空格间的位置。例如:er\b 可匹配 "never" 中的 'er',不匹配 "verb" 中的 'er'。
  • \B:匹配非单词边界。er\B 能匹配 "verb" 中的 'er'。
  • \d:匹配数字字符,等价于 [0-9]。\D 匹配非数字。
  • \s:匹配任何空白字符(空格、制表符、换页符等),等价于 [ \f\n\r\t\v]。\S 匹配非空白字符。
  • \w:匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_]。\W 匹配非单词字符。

5. 转义与引用

\ 将下一个字符标记为特殊字符、原义字符、后向引用或八进制转义符。例如 '\n' 匹配换行符,'\\' 匹配反斜杠。\num 用于对所获取的匹配进行后向引用,如 (.)\1 匹配两个连续的相同字符。

不同编程语言中的验证实现

在实际开发中,正则表达式常用于表单验证。根据运行环境的不同,可分为客户端 JavaScript 验证和服务器端 C# 验证。

第1步:JavaScript 客户端验证

目的:提升用户体验,快速反馈输入错误,减少不必要的服务器请求。

入口:浏览器控制台或 HTML 页面脚本区域。

动作:使用原生 RegExp 对象进行测试。

function check() {
    var match = /^\d$/; // 定义只匹配单个数字的正则
    var val = $("#txt").val(); // 获取输入框的值
    if (match.test(val)) {
        alert("测试通过");
    } else {
        alert("测试不通过");
    }
}

第2步:C# 服务器端验证

目的:确保数据安全,防止恶意输入,作为客户端验证的双重保障。

入口:ASP.NET 服务端事件,如按钮点击事件 Button1_Click。

动作:调用 System.Text.RegularExpressions.Regex.IsMatch 方法。

protected void Button1_Click(object sender, EventArgs e)
{
    string pattern = @"\d"; // C# 中使用逐字字符串常量避免双重转义
    if (System.Text.RegularExpressions.Regex.IsMatch(this.TextBox1.Text, pattern))
    {
        ClientScript.RegisterClientScriptBlock(GetType(), "", "alert('验证成功!')", true);
    }
    else
    {
        ClientScript.RegisterClientScriptBlock(GetType(), "", "alert('验证不成功!')", true);
    }
}

常用验证正则模板速查

以下为日常开发中高频使用的正则表达式模式,可直接复制引用以简化验证逻辑:

  • 中文及英文 Email 地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
  • 中国大陆手机号码:/^13\d{9}$/gi 或兼容 +86 前缀:^((\+86)|(86))?(13)\d{9}$
  • 固定电话号码:^(\d{3,4}-)?\d{7,8}$
  • URL 链接提取:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$
  • 整数与非负整数:-?\d+$ 与 ^[0-9]*[1-9][0-9]*$
  • 浮点数:(^-?\d+)(\.\d+)?$
  • 由字母组成的字符串:^[A-Za-z]+$

正则表达式虽然看起来复杂,但只要耐心拆解其中的规律并整合常用模块,便能在字符串处理和输入验证工作中事半功倍。以上就是正则表达式语法规则详解及在JavaScript与C#中的验证应用的详细内容,更多关于正则表达式验证技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。