Javascript正则表达式测试字符串是否在分隔行上只有数字

时间:2018-11-12 08:40:21

标签: javascript regex

我想测试字符串(来自html textarea)是否仅用新行分隔数字,还允许使用前导/后跟空格。

我尝试了以下方法:

/^\d\n+$/.test(val);

/^(?=.*\d)[\d ][\n ]+$/.test(val)

两个都不起作用。

1 个答案:

答案 0 :(得分:1)

您可以使用

(?: *\d+ *(?:\n|$))+$

重复一个包含零个或多个空格,后跟数字,后跟更多空格,后跟换行符或字符串末尾的组。

const textarea = document.querySelector('textarea');
textarea.onkeyup = () => {
  const { value } = textarea;
  textarea.style.backgroundColor =
    /^(?: *\d+ *(?:\n|$))+$/.test(value)
    ? '#c0ffb7'
    : '#ffb7b7';
};
textarea {
  width: 300px;
  height: 300px;
}
<textarea>1234
432
44431</textarea>

请注意,\s虽然一开始似乎很诱人,但可能会指代任何种空格字符,包括文字空间和换行符-因此,要具体尽可能在正则表达式中使用文字空间,以确保仅在需要时才匹配文字空间(当然,还可以使用\n来匹配换行符。)