Звездочка - это только оператор повторения , но вам нужно сказать, что вы повторяете. /*abc*/
соответствует строке, содержащей ab и ноль или больше c (потому что второй * находится на c; первый не имеет смысла, потому что ему нечего повторять). Если вы хотите что-то сопоставить, вам нужно сказать .*
- точка означает любой символ ( в определенных рекомендациях ). Если вы хотите просто совместить abc, вы можете просто сказать grep 'abc' myFile
. Для вашего более сложного соответствия вам нужно использовать .*
- grep 'abc.*def' myFile
будет соответствовать строке, содержащей abc, затем def с чем-то опционально между ними.
Обновление на основе комментария:
*
в регулярном выражении не совсем совпадает с * в консоли. В консоли * является частью glob construct и просто выступает в качестве подстановочного знака (например, ls *.log
перечисляет все файлы, которые заканчиваются на .log). Однако в регулярных выражениях * является модификатором, что означает, что он применяется только к предшествующему ему персонажу или группе. Если вы хотите, чтобы в регулярных выражениях * в качестве подстановочных знаков вам нужно было использовать .*
, как указано выше, точка является символом подстановки, а звезда при изменении точки означает поиск одной или нескольких точек; то есть. найдите один или несколько символов.
Вы можете просто добавить прослушиватель событий, используя JavaScript.
document.querySelector('input[name="verify"]').onkeyup = function() {
if (this.value.length === 4) alert('test');
}
<input type="text" name="verify" maxlength="4" />
Это ваш тот же фрагмент (ваш код), просто добавляющий функцию проверки и соответствующий вызов.
const verificationFunction = (value) => {
alert("here we are runnning the verification over " + value)
}
var x = function x() {
var element = document.getElementsByName("verify")[0];
if (element.value.length >= 4) {
verificationFunction(element.value)
}
}
<input type="text" name="verify" maxlength="4" onkeyup="x()" />