我想测试字符串(来自html textarea)是否仅用新行分隔数字,还允许使用前导/后跟空格。
我尝试了以下方法:
/^\d\n+$/.test(val);
和
/^(?=.*\d)[\d ][\n ]+$/.test(val)
两个都不起作用。
答案 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
来匹配换行符。)