gpt4 book ai didi

jQuery 正则表达式匹配函数总是返回 false

转载 作者:行者123 更新时间:2023-12-01 02:40:54 25 4
gpt4 key购买 nike

我尝试在 jQuery 中制作一个简单的表单验证函数,但以某种方式该函数总是返回输入为 false。你能帮我一下吗?

<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<style>input.notoke { border: 1px solid red; }</style>
</head>
<body>
<script>
$(document).ready(function(){
$("form#validate :input").each(function(){
$(this).on("change paste keyup", function() {

if ( $(this).val().match( $(this).attr('data-regex') ) ){
$(this).removeClass('notoke');
} else {
$(this).addClass('notoke');
}

});
});
});
</script>

<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
<h3>Formulier</h3>
<form role="form" id="validate">
<div class="form-group">
<label for="email">Email address:</label>
<input type="text" class="form-control" id="email" data-regex="^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}$">
</div>
<div class="form-group">
<label for="pwd">Password:</label>
<input type="password" class="form-control" id="pwd" data-regex="/^[a-z0-9_-]{6,18}$/">
</div>
<div class="checkbox">
<label><input type="checkbox"> Remember me</label>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form> </div>
</div>
</div>

</body>
</html>

我不知道我错了...你能帮我吗?

我尝试使用“alert”来查看 $(this).val 和 $(this).attr('data-regex') 的值,但这对我来说似乎一切都很好。

最佳答案

从 DOM 读取的任何内容都是字符串

您必须使用 RegExp 构造函数并将字符串传递给它,以将字符串转换为正则表达式。

if ($(this).val().match(new RegExp($(this).attr('data-regex')))) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

另请注意,字符串中不需要分隔符斜杠。

并确保在需要时双重转义一些元字符

例如,要匹配数字,请使用

\\d

我还建议使用RegExp#test检查字符串是否满足正则表达式而不是 String#match

if (new RegExp($(this).data('regex')).test($(this).val())) {
<小时/>

此外,还可以缩短 jQuery 代码。

$("form#validate :input").on("change paste keyup", function () {
$(this).toggleClass('notoke', !new RegExp($(this).data('regex')).test($(this).val()));
});

Working Demo

关于jQuery 正则表达式匹配函数总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38246737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com