表单验证,HTML5模式不匹配

时间:2018-01-29 07:15:39

标签: regex html5 forms validation thymeleaf

我是Thymeleaf的新手,曾在网上搜索过,因此使用了html正则表达式。我没有将th:object传递给我的前端这个页面,因此我想要的是在表单输入中使用pattern属性处理验证。如果他们没有输入文件的扩展名,请警告用户。 (在这种情况下为“.xml”)。所以我想看看字符串是否包含子字符串。

然而,无法理解为什么以下失败。 (使用带有 pattern =“/ xml /”的fileName字段,因为正在检查正则表达式的静态值。还尝试了 th:pattern 但没有运气。)

<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout" layout:decorator="@{layouts/main}">
<div layout:fragment="content" class="container">
  <div class="page-header">
    <h2>Add New Project</h2>
  </div>
  <!-- multistep form -->
  <div id="msform">
    <!-- progressbar -->
    <ul id="progressbar">
      <li class="active">Project Details</li>
      <li>Choose operations</li>
      <li>Save operations</li>
      <li>project saved</li>
    </ul>
    <form id="project-details" class="project" method="post">
      <h2 class="fs-title">Project Details</h2>
      <h3 class="fs-subtitle">This is step 1</h3>
      <input type="text" th:field="${testSuitProject.name}" placeholder="Project Name" />
      <input type="text" th:field="${testSuitProject.endpoint}" placeholder="Service End Point" />
      <input type="text" th:field="${testSuitProject.fileName}" placeholder="FileName ex: sample_project.xml" pattern="/xml/" />
      <input type="submit" name="next" id="btn-first" class="next action-button" value="Next" />
    </form>
  </div>
</div>

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

你的正则表达式完全错了。要将字符串与“.xml”匹配结束:

<input type="text" placeholder="FileName ex: sample_project.xml" pattern=".*\.xml" />

.* =匹配任何字符(在字符串的开头)。

\. =一个文字点,因为点表示正则表达式中的任何字符。

(也许你会混淆JavaScript,其中reg表达式被/包围:es来创建一个正则表达式对象。)