C# 如何为mach特殊字符创建正则表达式
我想为这个字符串值创建一个正则表达式:C# 如何为mach特殊字符创建正则表达式,c#,regex,C#,Regex,我想为这个字符串值创建一个正则表达式: 100[some digits][some digits | some words | @][some digits | some words | @][some digits] 例如: 100[1234567855][1122bb33@@aaa][222@ffff@@@][1234567890]# 我使用了这个正则表达式: (100)\[(\d+)\]\[\[(\d+)|(\w+)|(\@)\[(\d+)|(\w+)|(\@)\]\[(\d+)\]#
100[some digits][some digits | some words | @][some digits | some words | @][some digits]
例如:
100[1234567855][1122bb33@@aaa][222@ffff@@@][1234567890]#
我使用了这个正则表达式:
(100)\[(\d+)\]\[\[(\d+)|(\w+)|(\@)\[(\d+)|(\w+)|(\@)\]\[(\d+)\]#$
但它不能正常工作。
有什么想法吗
谢谢你的帮助
^(100)\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\]#$
您可以改为使用这个。请参阅演示
您可以通过在字符类中包含all来改进正则表达式
^(100)\[(\d+)\]\[([\da-zA-Z@]+)\]\[([\da-zA-Z@]+)\]\[(\d+)\]#$
您捕获的是
(\d+)(\w+)(\@)
,而您的测试字符串中有两到三次
。您的正则表达式在某些地方是错误的
(100)\[(\d+)\]\[\[(\d+)|(\w+)|(\@)\[(\d+)|(\w+)|(\@)\]\[(\d+)\]#$
^^ ^^ ^
1 23 4
- 1:重复\[
- 2:失踪+
- 3:缺少\]
- 4:失踪+
将
\w
、\d
、@
放入字符类中,以匹配单词、数字或@
符号
@"^100\[(\d+)\]\[([\d@\w]+)\]\[([\d@\w]+)\]\[(\d+)\]#$"
由于[
是正则表达式中的一个特殊字符,因此必须对该字符进行转义才能匹配文字[
符号。[\d@\w]+
匹配一个或多个数字或单词字符或@
试试这个
这将确保后面有一个100,后跟您想要的表达式
^:表达的开始
[^100]:以100开头
^(.?$|[^100]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\])#
您正在开发的环境是什么?是asp.net吗?我建议您使用自定义验证器。因为您可以执行验证器的相同功能,而无需通过正则表达式。我提供了正确的匹配信息。我在[]中保存每个数据在seprate gorup中。只需通过捕获组围绕角色类。请参阅我的更新。查看评论:您应该为您的答案提供一些上下文。稍微解释一下它们是如何工作的。
^(.?$|[^100]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\])#