作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想自动删除所有与输入中的模式不匹配的字符。我首先尝试使用“^”(示例:“[a-z]{2,2}”将转换为“[^a-z]*”),但这只适用于某些输入。
这是我的代码:
$("input:not([ignore-pattern-check])[pattern]").on("input", function(){
let val = $(this).val();
if (val.length >= 1){
var regex = $(this).attr("pattern");
if (regex.charAt(0) == "^"){
regex = regex.substr(1, regex.length);
}
if (regex.charAt(regex.length - 1) == "$"){
regex = regex.substr(0, regex.length - 1);
}
regex = regex.replace(/\{(.+?)\}/, "*");
regex = "^(?!.*(" + regex + "))$";
let reg = new RegExp(regex);
if (reg.test(val)){
alert("This char isn't allowed!");
} else {
_hide_message();
}
$(this).val(val.replace(reg, ""));
}
});
编辑例子:我有一个带有 pattern="^[a-z]*$"
的输入。当我现在输入“A”(区分大小写)时,这个“A”应该会自动从值中删除。当我输入“a”时,它不应被删除。
最佳答案
您可以尝试下面的代码 - 使用上面评论中的解决方案。
const update = () => {
const regex = document.getElementById("regex").value;
const input = document.getElementById("input").value;
const result = input.match(new RegExp(regex, 'g')).join('X');
console.log("result", result);
document.getElementById("output").innerHTML = result;
}
<label for="regex">Regex</label><input name="regex" id="regex" type="text" value="[a-z ]+"><br>
<label for="input">Input</label><input name="input" id="input" type="text" value="only Small Letters allowed, no _ underscores etc:)"><br>
<button onclick="update()">Run</button>
<br>
<div id="output"></div>
关于Javascript/jQuery 以编程方式反转正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431131/
我是一名优秀的程序员,十分优秀!