不要在angularjs的textarea中输入超过20个逗号分隔或换行符分隔的序列号和字母数字
Posted
技术标签:
【中文标题】不要在angularjs的textarea中输入超过20个逗号分隔或换行符分隔的序列号和字母数字【英文标题】:Don't Input more than 20 comma separated or new-line separated serial no and alpha-numeric in textarea in angularjs 【发布时间】:2020-10-27 07:42:23 【问题描述】:这是我的问题陈述。任何帮助都会很棒。
允许用户在文本区域中输入文本,但有以下限制。
只允许输入字母数字(序列号)。
只有 20 个条目(可以用逗号分隔,如 FVO01、FVO02、FVO03 ..) 或类似的新行 FVO01. FVO02. FVO03等
用户可以从记事本或 Excel 表中复制和粘贴,因此在这样做时 2 个序列号之间可能会有超过 1 个新行,因此也必须注意这一点。
我的方法: 首先修剪所有空格。 用逗号 (,) 替换所有新行 (/n) 字符。如果它已经是逗号分隔的条目,则转换不会影响任何内容。 计算长度,如果超过 20 则提示。
这是我到目前为止所尝试的,不知何故捕获和替换新行不起作用。
寻找满足上述所有条件的更好解决方案。谢谢
function checkValidations(newValue)
$ctrl.serialNos = newValue;
var comma = "";
if($ctrl.serialNos)
comma = $ctrl.serialNos.replace(/\s/g, "");
comma = $ctrl.serialNos.replace(/\n/g, ",");
comma = comma.split(",");
var alphaNumeric = /^[(a-z)(A-Z)(0-9),]+$/;
if($ctrl.serialNos)
if(!($ctrl.serialNos.match(alphaNumeric)))
alert("Please enter only Alphanumeric values")
if (comma.length > 21 )
alert("You can not enter More than 20 serial nos");
【问题讨论】:
请尝试console.log(string2.split(/\n|,/g).length <= 20 && /[A-Za-z0-9]+/.test(string2.replace(/[\s\n,]+/g, "")));
它现在将 /n 转换为逗号,但我根据逗号计算序列号。因此,如果在 2 个序列号之间有多个 /n(比如说 3),那么它将转换为 3 个逗号,虽然我有 2 个序列号,但我的序列号总数将为 5,这将影响我的验证。它不允许我在 17 个序列号之后输入。任何解决方法
好的,您想将新行转换为逗号吗?请检查此\n+
。请注意那里有逗号。
谢谢,这有助于解决我的问题
我很高兴它有帮助=)请考虑支持下面提供的答案。它会帮助回答者。
【参考方案1】:
您可以匹配一个字母数字条目,并重复 0 - 19 次字母数字条目,前面可以有 1 个或多个换行符或逗号
^[a-zA-Z0-9]+(?:(?:[\r\n]+|,)[a-zA-Z0-9]+)0,19$
说明
^
字符串开始
[a-zA-Z0-9]+
匹配任何列出的 1 次以上(字母数字条目)
(?:
非捕获组
(?:[\r\n]+|,)
匹配 1+ 换行符或单个逗号
[a-zA-Z0-9]+
匹配列出的任何字符的 1 次以上
)0,19
关闭非捕获组并重复0-19次
$
字符串结束
Regex demo
您可以使用test 来检查输入是否有效
if (!pattern.test(s))
// ...
【讨论】:
【参考方案2】:\s
匹配所有空格,包括新行,因此您需要先替换新行。
comma = $ctrl.serialNos.replace(/\n+/g, ",");
comma = comma.replace(/\s/g, "");
【讨论】:
它现在将 /n 转换为逗号,但我根据逗号计算序列号。因此,如果在 2 个序列号之间有多个 /n(比如说 3),那么它将转换为 3 个逗号,虽然我有 2 个序列号,但我的序列号总数将为 5,这将影响我的验证。它不允许我在 17 个序列号之后输入。任何解决方法 @Saket 没问题。以上是关于不要在angularjs的textarea中输入超过20个逗号分隔或换行符分隔的序列号和字母数字的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS:$http.post 使用 textarea 的多个值?
在 Textarea 中,一些单词会自动变成超链接(summernote)