【问题标题】:How to use regex in html5 attribute for Cyrillic letters?如何在西里尔字母的 html5 属性中使用正则表达式?
【发布时间】:2014-04-27 01:21:29
【问题描述】:

首先我搜索了答案,但直到现在都没有成功。

我有一个通过 POST 提交一些输入的表单,但在此之前我想在客户端确保名字和姓氏仅使用拉丁字母或西里尔字母。

到目前为止,它仅适用于拉丁字母,但我无法使用西里尔字母。 这是我现在使用的,任何帮助将不胜感激

<input id="userfnamesignup" type="text" pattern="[a-zA-Z]{3-30}" 
       name="user_fname" placeholder="Enter your name please" required />

【问题讨论】:

  • 一些有效的西里尔名称包含非字母符号,例如“Анна-Мария”或“Иван-Асен”。这些是与您的模式不匹配的有效名字,就像“Jean-Claude”不匹配一样。
  • 您的正则表达式中有语法错误。 {3-30} 应该是 {3,30}。在[] 中添加а-я 应该可以工作。如果没有,下面的答案会起作用。
  • @PhistucK а-я 会排除很多像љ 这样在某些西里尔字母中有效的字母。
  • @lanzz - 正确,关键是当 al1en 尝试任何操作时,语法错误可能会阻止代码工作。在 UNICODE 表中搜索第一个和最后一个字符将只针对西里尔字符(而不是标点符号,如您所述)。

标签: regex html


【解决方案1】:

JavaScript 对 unicode 的支持不是很好,但您应该能够使用 Cyrillic unicode character range 作为正则表达式的一部分,它应该可以工作。

[a-zA-Z\u0400-\u04ff]{3,30}

http://jsfiddle.net/7anQs/

【讨论】:

  • 我试过了,谢谢,我会在 4 分钟内标记为答案。另外,如果您能在 PHP 方面告诉我如何过滤这种格式的电话号码 (+nnn nn nnn-nnn)??
  • @al1en 提出一个单独的问题
猜你喜欢
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多