Hugo Vazquez Asked: 2020-01-21 20:30:24 +0800 CST 2020-01-21 20:30:24 +0800 CST 2020-01-21 20:30:24 +0800 CST 如何制作一个不允许前导空格的正则表达式? 772 我正在寻找一个不允许我使用前导空格和后导空格的正则表达式,是的,确实如此。 javascript 1 Answers Voted Best Answer Mariano 2020-01-21T23:04:05+08:002020-01-21T23:04:05+08:00 三个选项: 1. 匹配前导空格,但否定整个结果: if ( !/^\s/.test(texto) ) { ^^^ el signo de admiración niega al resultado del método .test() ^- 匹配文本开头的位置。 \s- (小写)匹配 1 个空格,即[ \t\n\r\f]. 毫无疑问,感叹号是JavaScript 逻辑运算符not,它不是正则表达式的一部分。 2. 匹配一个非空白字符: /^\S/ ^- 匹配文本开头的位置。 \S- (大写)匹配 1 个不是 的字符,即\s, [^ \t\n\r\f]。 反对:它不接受空文本。 3. 使用负前瞻: /^(?!\s)/ ^- 匹配文本开头的位置。 (?!.. )- 这是一个否定的lookahead ,即不消耗字符,只有当里面的模式不 匹配时才匹配。 \s- 匹配一个空格。 也就是说,所有这些正则表达式都可以解释为:如果后面没有空格,则匹配文本的起始位置 代码(用重复的结构来简化它): const regex1 = /^\s/; const regex2 = /^\S/; const regex3 = /^(?!\s)/; let input1 = document.getElementById("inp1"); let input2 = document.getElementById("inp2"); let input3 = document.getElementById("inp3"); let resultado1 = document.getElementById("res1"); let resultado2 = document.getElementById("res2"); let resultado3 = document.getElementById("res3"); //cuando cambia el texto del input input1.addEventListener("input", function() { //ver si NO coincide el regex /^\s/ if (!regex1.test(input1.value)) { resultado1.innerText = "(no coincide) -> Verdadero :-)"; } else { resultado1.innerText = "(coincide) -> ¡Falso!"; } }); input2.addEventListener("input", function() { //ver si coincide el regex /^\S/ if (regex2.test(input2.value)) { resultado2.innerText = "Coincide :-)"; } else { resultado2.innerText = "¡No coincide!"; } }); input3.addEventListener("input", function() { //ver si coincide el regex /^(?!\s)/ if (regex3.test(input3.value)) { resultado3.innerText = "Coincide :-)"; } else { resultado3.innerText = "¡No coincide!"; } }); <p>Prueba negando a <code>/^\s/</code>:</p> <input type="text" id="inp1"> <code id="res1" r></code> <p>Prueba de <code>/^\S/</code>:</p> <input type="text" id="inp2"> <code id="res2"></code> <p>Prueba de <code>/^(?!\s)/</code>:</p> <input type="text" id="inp3"> <code id="res3"></code>
三个选项:
1. 匹配前导空格,但否定整个结果:
^
- 匹配文本开头的位置。\s
- (小写)匹配 1 个空格,即[ \t\n\r\f]
.毫无疑问,感叹号是JavaScript 逻辑运算符
not
,它不是正则表达式的一部分。2. 匹配一个非空白字符:
^
- 匹配文本开头的位置。\S
- (大写)匹配 1 个不是 的字符,即\s
,[^ \t\n\r\f]
。反对:它不接受空文本。
3. 使用负前瞻:
^
- 匹配文本开头的位置。(?!
..)
- 这是一个否定的lookahead ,即不消耗字符,只有当里面的模式不 匹配时才匹配。\s
- 匹配一个空格。也就是说,所有这些正则表达式都可以解释为:如果后面没有空格,则匹配文本的起始位置
代码(用重复的结构来简化它):