【问题标题】:Regex for comma delimited list with line breaks带有换行符的逗号分隔列表的正则表达式
【发布时间】:2017-08-06 15:30:50
【问题描述】:

我希望在我的文本框中允许的格式是逗号分隔列表,后跟逗号分隔列表之间的换行符。这是我希望用户提供的示例:

1,2,3
1,2,4
1,2,5
1,2,6

到目前为止,我已经限制了使用此 ValidationExpression 的用户:

^([1-9][0-9]*[]*[ ]*,[ ]*)*[1-9][0-9]*$

但是,使用该表达式,用户只能输入一行以逗号分隔的数字。

如何通过接受换行符来继续接受多行?

【问题讨论】:

标签: asp.net regex validation expression


【解决方案1】:

可以检查输入的格式是否正确。我建议使用组并重复它们:

((\d+,)+\d+\n?)+

但要检查矩阵是否对称,您必须使用其他东西,然后是正则表达式。

在这里查看:https://regex101.com/r/GqtOuQ/2/

如果您想更加用户友好,可以在数字和逗号之间允许用户想要添加的水平空格。这可以通过他的正则表达式组\h 来完成,它允许除\n 之外的所有空格。

正则表达式代码现在看起来有点乱:

((\h*\d+\h*,\h*)+\h*\d+\h*\n?\h*)+

在这里查看:https://regex101.com/r/GqtOuQ/3

这是应该与 .NET 一起使用的版本:

(([ \t]*\d+[ \t]*,[ \t]*)+[ \t]*\d+[ \t]*\n?[ \t]*)+

【讨论】:

  • 好吧,这似乎可行,但如果用户输入有点乱,我怎么能在逗号之前和/或之后允许一个空格?
  • 就我个人而言,我建议允许用户想要的任意多个空格/制表符。您的软件可以在之后对其进行修剪。检查我更新的答案。
  • 我更喜欢您更新后的答案,但是一旦我做出更改,我的 Web 表单将无法在浏览器中打开。尝试访问 URL 时出现以下错误:您要查找的资源已被删除、名称已更改或暂时不可用。我尝试的第一个表达方式没有这个问题。
  • @justinpees 您可能需要使用空格(如果足够)或与标签[ \t] 一起使用,而不是 .net 正则表达式风格不支持的\h
  • 你能给我完整的表达吗?我是一个只有 2 小时正则表达式经验的初学者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 2011-03-28
相关资源
最近更新 更多