正则表达式仅检查第一个字符字符串C# [英] Regex only checks first character in string C#
本文介绍了正则表达式仅检查第一个字符字符串C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为什么下面的方法只检查的第一个字符所提供的字符串中?
Why does the following method only check the first character in the supplied string?
public static bool IsUnicodeSms(string message)
{
var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!""#%&'()*+,-./0123456789:;<=>? ¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà^{}\[~]|€]+$");
return !strMap.IsMatch(message);
}
因此,例如,以下字符串返回false:ABCლ,而是ლABC返回true。
So for example the following string returns false: "abcლ" but "ლabc" returns true.
推荐答案
您已经逃离]
与 \]
键,也把 -
结尾:
You have to escape ]
with \]
and also put the -
at the end:
改变这样的:
var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!""#%&'()*+,-./0123456789:;<=>? ¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà^{}\[~]|€]+$");
要这样:
var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!""#%&'()*+,./0123456789:;<=>? ¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà^{}\[~\]|€-]+$");
顺便说一句,你可以提高你的正则表达式及用途:
Btw, you can improve your regex and use:
var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!"#%&'()*+,./\w:;<=>? ¡ÄÖÑܧ¿äöñüà^{}\[~\]|€-]+$");
和使用忽略大小写的标志,如果不知道可能会帮助你缩短它更像是这一点:
And not sure if using the ignore case flag might help you to shorten it a little more like this:
var strMap = new Regex(@"(?i)^[@£$¥èéùìòÇøå_Ææß!"#%&'()*+,./\w:;<=>? ¡§¿äöñüà^{}\[~\]|€-]+$");
这篇关于正则表达式仅检查第一个字符字符串C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文