c# - 正则表达式只检查字符串 C# 中的第一个字符

标签 c# regex

<分区>

为什么下面的方法只检查提供的字符串中的第一个字符?

public static bool IsUnicodeSms(string message)
{
   var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!""#%&'()*+,-./0123456789:;<=>? ¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà^{}\[~]|€]+$");
   return !strMap.IsMatch(message);
}

例如,以下字符串返回 false:“abcლ”但“ლabc”返回 true。

最佳答案

您必须使用 \] 转义 ] 并将 - 放在末尾:

改变这个:

var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!""#%&'()*+,-./0123456789:;<=>? ¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà^{}\[~]|€]+$");

对此:

var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!""#%&'()*+,./0123456789:;<=>? ¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà^{}\[~\]|€-]+$");

顺便说一句,你可以改进你的正则表达式并使用:

var strMap = new Regex(@"^[@£$¥èéùìòÇØøÅå_ÆæßÉ!"#%&'()*+,./\w:;<=>? ¡ÄÖÑܧ¿äöñüà^{}\[~\]|€-]+$");

并且不确定使用忽略大小写标志是否可以帮助您像这样缩短它:

var strMap = new Regex(@"(?i)^[@£$¥èéùìòÇøå_Ææß!"#%&'()*+,./\w:;<=>? ¡§¿äöñüà^{}\[~\]|€-]+$");

关于c# - 正则表达式只检查字符串 C# 中的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541753/

相关文章:

c# - 使用 ClaimsPrincipalPermission 和 ADFS 2.0 返回的声明来注释类

c# - 将 IEnumerable<int> 初始化为可选参数

python - 如何为本文构造正则表达式

JavaScript 正则表达式 : `/x.*y/` versus `/x(?=.*y)/`

regex - 如何在 Vim 语法中突出显示以 ‘@’ 开头的单词?

C#/WPF : DataGrid - Last Row/Footer Row possible?

c# - SQL Select 数据变化时

c# - C# 做尾递归吗?

regex - 为什么我的非贪婪匹配在 vim 中不起作用?

php - 正则表达式基于和/或在搜索概念中中断字符串