正则表达式仅检查第一个字符字符串C# [英] Regex only checks first character in string C#

查看:137
本文介绍了正则表达式仅检查第一个字符字符串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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆