此问题在此处已有答案:
Why do regex constructors need to be double escaped?(5个答案)
昨天关门了。
我试着创建一个HTML输入(使用JavaScript),只要它包含“[...]”并且超过5个字母,就可以使用任何字符。例如,“我的狗的名字是[...],他很傻”。这是我的js代码。
const sentenceInput = document.createElement('input');
sentenceInput.minLength = '5';
sentenceInput.pattern = ".*\[\.\.\.\].*";
sentenceInput.required = true;
sentenceInput.title = 'Include [...]';
问题是输入允许用户提交任何超过5个字符和“[.”而不是“[...]"的内容。发生了什么,我该如何修复这个问题?
我试过用
sentenceInput.pattern = ".*\[\.{3}].*";
或者甚至
sentenceInput.pattern = "/.*\[\.{3}].*/g";
都不管用。
1条答案
按热度按时间ukdjmx9f1#
将模式更改为
".*\\[\\.\\.\\.\\].*"
或".*\\[\\.{3}\\].*"
将获得所需的行为:第一个
特殊字符
[
、.
和]
需要用\
* 转义两次 *,因为它们首先在JavaScript中解释,然后在提交事件由回车键触发之后解释。