【问题标题】:regular expression with jquery and accented characters带有 jquery 和重音字符的正则表达式
【发布时间】:2011-09-23 09:57:13
【问题描述】:

我正在寻找一个正则表达式来验证输入: 在法国,我们可以在名称中使用重音字符,但我找不到可以使用的任何东西。 拜托,你能帮我找到如何做一个正则表达式: -任何字母 - 任何重音字母 -空格 - 和符号“-”(不带引号)

我尝试过类似的方法,但它似乎不起作用.. var regealpha =/[^A-Za-z0-9ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèééêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]/;

谢谢你的帮助(对不起我糟糕的英语......我是一只青蛙^^)

【问题讨论】:

  • 不清楚你需要匹配什么。能给我们举个例子吗?
  • 非常感谢您的所有回答!!!他们都很好,但我的问题是:谁有他的名字? (也许是 R2D2,或 C-3PO ......)。我需要测试的是,如果我们可以在名称中找到各种字符:[az][AZ] 空格(组合名称)破折号(组合名称)sp 对我来说最好的方法是:/^[a-zA -Z ',-]+$/ 谢谢大家
  • 编辑您的问题以包含一些示例。包括正确和不正确的名称。
  • 参见下面的“编辑”。希望我理解正确。

标签: jquery regex input expression


【解决方案1】:

JavaScript 似乎没有很好的国际化选项。符号 \w 将为您提供所有 [A-Za-z0-9_],但除此之外您还需要规定自己的字符。

你似乎很亲密。以下正则表达式应该适合您:

/[\wÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]/g

在这个 jsfiddle 上看到它的工作原理:

http://jsfiddle.net/jameswiseman/3H2mJ/1/

您会看到正则表达式将输入字符串"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ" 中的所有内容替换为“z”。

编辑

我认为这是你需要的:

/[^a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]/

它会告诉你是否有字符不在上面的集合中。所以

var myRegex = /[^a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]/;
"C3P0".test(myRegex ); //returns true --> Report Error!
"kangun".test(myRegex ); //returns false --> OK :-)
"kàngun".test(myRegex ); //returns false --> OK :-)

也可以看看this JSFiddle

我知道它很长,但如果需要,那么你应该使用它。

【讨论】:

  • 很好,但是……太长了,我不需要名字或姓氏中的数字……:)
  • 谢谢,但我不需要名字或姓氏中的数字,我没有很好地解释我需要什么(我不会流利地写英文..真的不是......)
【解决方案2】:

也许您想使用匹配 unicode 字母的\p{L} (as described here)。

【讨论】:

  • @levu,JavaScript 支持这个吗?
  • "不支持 Unicode,除了匹配单个字符" (regular-expressions.info/javascript.html) -> 应该是可能的
  • @levu,我在 Firefox 上测试了 \p{L} here,但它似乎不起作用。
  • 我用过 var regealpha =/^[a-zA-Z ',-]+$/;
猜你喜欢
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 2013-04-02
相关资源
最近更新 更多