首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语义UI表单验证RegEx将不匹配mm/dd/yyyy日期

语义UI表单验证RegEx将不匹配mm/dd/yyyy日期
EN

Stack Overflow用户
提问于 2016-01-10 23:32:06
回答 1查看 3.2K关注 0票数 1

我试图验证文本框的文本输入,以便只允许mm/dd/yyyy输入。基于regex测试器,regex似乎对我试图匹配的内容是有效的。

是什么导致了它的失败,我如何去修复它呢?

RegEx:(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d

Regex测试:http://www.regextester.com/?fam=93828

JSFiddle:https://jsfiddle.net/tL5xx6m9/2/

片段:

代码语言:javascript
复制
$('.ui.form').form({
  inline: true,
  fields: {
    dateInput: {
      identifier: 'dateInput',
      rules: [{
        type: "regExp[/(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d/]",
        prompt: "Please select a valid mm/dd/yyyy date"
      }]
    },
    timeInput: {
      identifier: 'timeInput',
      rules: [{
        type: "regExp[/^(OFF)|([0-1]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])? [APap][mM]$/]",
        prompt: "Please select a valid hh:mm AM/PM time"
      }]
    }
  }
});
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/jquery/2.1.4/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/semantic.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/semantic.min.js"></script>


<form class="ui form attached fluid segment">
  <div class="field">
    <input name="dateInput" value="01/15/2015" type="text" placeholder="Entry Date">
  </div>
  <div class="field">
    <input name="timeInput" class="field-custom" value="5:30 PM" type="text" id="" placeholder="Entry Time">
  </div>
  <button class="ui teal button" type="submit">Submit</button>
</form>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-11 09:52:13

因为regex表达式是javascript字符串的一部分,所以任何反斜杠都需要使用双反斜杠来转义。于是\d变成了\\d

此外,使用string ^的开始和string $标记的末尾来防止来自较大字符串(如01/15/20155 )的匹配成功。

结果:

代码语言:javascript
复制
type: "regExp[/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$/]",

片段:

代码语言:javascript
复制
$('.ui.form').form({
  inline: true,
  fields: {
    dateInput: {
      identifier: 'dateInput',
      rules: [{
        type: "regExp[/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$/]",
        prompt: "Please select a valid mm/dd/yyyy date"
      }]
    },
    timeInput: {
      identifier: 'timeInput',
      rules: [{
        type: "regExp[/^(OFF)|([0-1]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])? [APap][mM]$/]",
        prompt: "Please select a valid hh:mm AM/PM time"
      }]
    }
  }
});
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/jquery/2.1.4/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/semantic.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/semantic.min.js"></script>


<form class="ui form attached fluid segment">
  <div class="field">
    <input name="dateInput" value="01/15/2015" type="text" placeholder="Entry Date">
  </div>
  <div class="field">
    <input name="timeInput" class="field-custom" value="5:30 PM" type="text" id="" placeholder="Entry Time">
  </div>
  <button class="ui teal button" type="submit">Submit</button>
</form>

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34712069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档