正则表达式:任意非空字符与空字符以及换行符的匹配?

时间:2022-01-06 18:49:27
想判断一个字符串,标准格式如下:

Addr:ABC DEF ~.d
Tel:0424
Email:HIJ@X.com

如上所示,要求的字符串中Addr: Tel: Email:这些是固定要求匹配的,中间用换行符\r\n分隔,每一项之后都必须至少有一个非空字符(注意:可能是若干个含特殊字符的单词),为简单计,可不对Tel和Email后的字符做具体要求。

即要求是
Addr:一个以上非空字符(可能是若干个单词含空格与特色字符)\r\nTel:
一个以上非空字符(可能是若干个单词含空格与特色字符)\r\nEmial:一个以上非空字符(可能是若干个单词含空格与特色字符)

求教:这个正则表达式该怎么写?
一直都不对,救命~~~~~~~~~~~

6 个解决方案

#1


Addr:.*?Tel:.*?Email:.*?(?=\n)

#2


To:liuyilin777
非常感谢,可是不对啊

#3


Addr:\s*\S+.*\nTel:\s*\S+.*\nEmail:\s*\S+.*

最后用了这个,虽然写着有点长,但,好在易读懂!

#4


检查下你是否启用了多行匹配模式。
一种办法是new一个Regex对象,设置MultiLine=true
一种办法是加上(?is)

#5


地址用  (?<=Addr:)\w*
电话用  (?<=Tel:)\d*
邮件用  (?<=Email:).*@.*\.com

#6


 string pattern = @"^(?is)Addr:.*?\r\nTel:\d+\s*\r\nEmail:[_0-9a-z]+@[_0-9a-z]+(\.[_0-9a-z]+)+$";
            

#1


Addr:.*?Tel:.*?Email:.*?(?=\n)

#2


To:liuyilin777
非常感谢,可是不对啊

#3


Addr:\s*\S+.*\nTel:\s*\S+.*\nEmail:\s*\S+.*

最后用了这个,虽然写着有点长,但,好在易读懂!

#4


检查下你是否启用了多行匹配模式。
一种办法是new一个Regex对象,设置MultiLine=true
一种办法是加上(?is)

#5


地址用  (?<=Addr:)\w*
电话用  (?<=Tel:)\d*
邮件用  (?<=Email:).*@.*\.com

#6


 string pattern = @"^(?is)Addr:.*?\r\nTel:\d+\s*\r\nEmail:[_0-9a-z]+@[_0-9a-z]+(\.[_0-9a-z]+)+$";