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

时间:2016-07-07 13:26:25

标签: jquery regex forms validation match

我尝试在jQuery中创建一个简单形式的valitation函数,但在某种程度上,这个函数总是返回de输入为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')的值,但这对我来说似乎很好。

1 个答案:

答案 0 :(得分:6)

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

您必须使用public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { //some constructor and holder class, nothing interesting is going on here @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ShelfViewHolder viewHolder = (ShelfViewHolder)holder; Item item = itemsToShow.get(position); Picasso.with(activity).load(item.getThumbnail()).into(viewHolder.thumbnail); } } 构造函数并将字符串传递给它才能将字符串转换为正则表达式。

RegExp

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

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

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

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

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

\\d

此外,可以缩短jQuery代码。

if (new RegExp($(this).data('regex')).test($(this).val())) {

Working Demo