场景是要在textarea中限制用户输入的长度为100,但是可以允许用户换行,换行不在长度计算中。如何写一个正则,用test方法判断
场景是要在textarea中限制用户输入的长度为100,但是可以允许用户换行,换行不在长度计算中。如何写一个正则,用test方法判断
对于在 textarea 中限制用户输入长度的需求,可以通过 JavaScript 和正则表达式来实现。首先,我们为 textarea 元素添加一个事件监听器,以便在用户输入时对其进行检查。然后,我们编写一个正则表达式来匹配除换行符之外的所有字符,并使用 test() 方法进行判断。以下是实现这一功能的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>限制输入长度示例</title>
</head>
<body>
<textarea id="myTextarea" oninput="checkInputLength(event)"></textarea>
<script>
function checkInputLength(e) {
// 获取 textarea 中的内容
const text = e.target.value;
// 创建正则表达式,匹配除换行符之外的所有字符
const regex = /[^\n]/g;
// 使用 match 方法获取匹配结果
const matches = text.match(regex);
// 计算匹配结果的长度
const inputLength = matches ? matches.length : 0;
// 判断长度是否超过限制
if (inputLength > 100) {
// 如果超过限制,取消输入并恢复到上一次的内容
e.target.value = text.slice(0, -1);
// 调用自定义函数
myCustomFunction();
}
}
function myCustomFunction() {
// 在这里实现自定义函数逻辑
console.log("输入长度超过了 100 个字符(不包括换行)");
}
</script>
</body>
</html>
示例代码会在用户在 textarea 中输入时检查输入长度。如果长度超过 100 个字符(不包括换行符),则会调用自定义函数 myCustomFunction()
并取消最近的输入。
可以用下面的方法,你可以使用maxlength 属性来限制 textarea 中的输入长度,但是这个属性不会计算换行符。
如果你想用正则表达式来判断输入是否超过了 100 个字符,你可以使用test方法,它会返回一个布尔值,表示正则表达式是否匹配了指定的字符串。
下面正则表达式的意思是匹配任意数量的不超过 100 个非换行符的行,每行后面可以跟一个换行符。
let regex = /^(?:[^\n]{0,100}\n?)*$/;
let textarea = document.getElementById("textarea");
let result = regex.test(textarea.value);
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
可以用正则剔除掉换行,然后判断字符长度就行了呀
正则匹配文本文件中的 3 种换行符 (行尾)