c# - 编辑正则表达式以实现角色(至少需要一个字母)
问题描述
我的 C# 代码上有一个正则表达式,我想通过添加约束来编辑它,以在字符串不包含至少 1 个字母时拒绝文本,无论语言是什么。
我的正则表达式:@"^(?!\s+$)[\p{L}\p{M}\p{N}\p{Zs}\t'.-]+$"
请有任何建议。
解决方案
任何 Unicode 字母都可以匹配\p{L}
(请参阅您自己的模式)。
要匹配除 Unicode 字母之外的任何字符,为了“获取”字符串中的字母,您可以使用\P{L}*
. 如果您只有没有换行符的字符串,您可以简单地使用.*
or .*?
。
请注意,此要求还涵盖了至少有一个非空白字符的要求,因此(?!\s+$)
前瞻变得多余(因为它所做的只是在字符串中只有空白时取消匹配)。
要要求某些模式稍后出现在字符串中,您可以使用前瞻:
@"^(?=\P{L}*\p{L})[\p{L}\p{M}\p{N}\p{Zs}\t'.-]+$"
// ^^^^^^^^^^^^^^^
@"^(?=.*\p{L})[\p{L}\p{M}\p{N}\p{Zs}\t'.-]+$"
// ^^^^^^^^^^^
请参阅.NET 正则表达式演示。
详情:
^
- 字符串的开始(?=\P{L}*\p{L})
- 在 Unicode 字母以外的零个或多个字符之后,必须有一个 Unicode 字母[\p{L}\p{M}\p{N}\p{Zs}\t'.-]+
- 一个或多个字母、变音符号、数字、水平空格'
、.
或-
字符$
- 字符串结束。
推荐阅读
- python - Python 文档和实现中“对象在内存中的地址”的细微差别
- python - 多个 Python 程序能否安全地同时打开一个 CSV 文件进行读取?
- python - 如何从 Ubuntu 18.04 中完全删除 Python 3.6
- sql - 自动生成架构
- html - 使用 XSLT 显示 XML 文件的内容
- javascript - 保护 Firebase 身份验证数据
- converter - 具有多个转换器和提供者的 ModelMapper
- html - Buffalo v0.11.0 与 flash 和 application.html 的问题?
- excel - 填写“级联”表格 - xmlhttp 请求
- python - 在 dict 中遍历 dict