我想在我的页面上控制textarea中的用户输入形式。 输入必须看起来像这样:
这意味着一行中只有三个值,第一个和第二个之间以及第二个和第三个值之间有分号。
到目前为止,我正在使用此正则表达式来验证它:
^((([^;]+);([^;]*);([^;]+))\n?)*$
它不能100%工作,因为它验证输入,如
value1;value2;value3
value1
有效。问题是新行和下一个值的开始1。似乎直到在value1之后写入第一个分号,value1仍然附加到上一行中value3的末尾。我应该如何更改正则表达式以禁用此功能并将每个新的不完整行标记为无效?
我创建了一个JS小提琴来演示: https://jsfiddle.net/tw2y5omc/3/
答案 0 :(得分:1)
关注正则表达式:
^((?:[^;]+;){2}(?:[^;\n\r]+))$
# captures everything into a group
# matches everything except a semicolon, followed by a semicolon two times
# afterwards everything except a semicolon or newlines being bound to the end of the string
如果您还想允许空值,请改为使用星号:
^((?:[^;]*;){2}(?:[^;\n\r]*))$