【问题标题】:Validating a string with comma-separated alphanumeric words only OR just spaces仅使用逗号分隔的字母数字单词或仅使用空格验证字符串
【发布时间】:2022-01-07 21:40:29
【问题描述】:

我正在研究一个允许用逗号分隔的字母数字字符的正则表达式。或者只是空格。没有逗号作为第一个字符。

我想做的事:

  • "101010101sadadsasd,120120310231023a,adasdads1231,asdasdasda1231"
  • " "

我要避免的事情:

  • "&#@@$,asdasdads,asdsd@!@"
  • ",aasdas,asdasd"
  • "asda asdsad asdasd ,asdasd"

可以接受但不想要的:(可以忍受)

  • ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
  • "asdasdasdas,asdasd123123,adsasd23123,"

下面是实现的屏幕截图和 isMatch = true 的事件,即使值是符号而不是字母数字。

链接显示问题截图,截图代码如下:

bool result = true;
Regex regx = new Regex(@"(^[a-zA-Z0-9]+[a-zA-Z0-9,-,]*$| *)");
if (regx.IsMatch(rowUpdate.ConNoteNumber))
{
    result = false;
}
return result;

【问题讨论】:

  • 啊,你的意思是你有逗号分隔的字母数字?所以,试试^(?:[a-zA-Z0-9]+(?:,[a-zA-Z0-9]+)*|\s*)$
  • 我确实添加了一张图片@Luuk。它在我帖子底部的链接中?
  • ^(?:(?:[A-Za-z0-9][A-Za-z0-9,]*)|\s+)$

标签: c# regex


【解决方案1】:

你可以使用

^(?:[a-zA-Z0-9]+(?:,[a-zA-Z0-9]+)*|\s*)$

详情

  • ^ - 字符串的开头
  • (?:
    • [a-zA-Z0-9]+(?:,[a-zA-Z0-9]+)* - 一个或多个字母/数字,然后出现零个或多个逗号和一个或多个字母/数字
  • | - 或
    • \s* - 零个或多个空格
  • ) - 小组结束
  • $ - 字符串结尾(如果正则表达式在服务器端执行,$ 也可以替换为 \z)。

请参阅regex demo

【讨论】:

  • 我已经实现了这个并且它运行良好。感谢您抽出时间 Wiktor。
猜你喜欢
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多