【问题标题】:regular expression for validation not working验证的正则表达式不起作用
【发布时间】:2011-03-01 17:29:47
【问题描述】:

我在表单中有一个“描述文本区域”,用户可以在其中输入项目的描述。

这是在提交表单之前使用 javascript 验证的。

其中一个验证步骤是这样的:

  else if (!fld.value.match(desExp)){

和desExp:

 var desExp = /^\s*(\w[^\w]*){3}.*$/gm;

现在我的问题是,这适用于所有情况,除了描述以瑞典语言的特殊字符(å、ä、ö)开头的描述。

这行不通:

    åäö hello world

但这会:

    hello world åäö

有什么解决办法吗?

谢谢

【问题讨论】:

标签: javascript html regex validation


【解决方案1】:

除非我有误解,否则您只是想验证字符串是否至少包含 3 个单词字符? \s* 开头告诉它寻找尽可能多的空白字符。然后模式 (\w[^\w]) 将匹配任何单词字符,后跟零个或多个非单词字符。 {3} 将断言存在三个单词字符。最后的 . 将匹配字符串的其余部分。

所以,如果我的理解和分析是正确的,那么你想要的是这个,对吧?

/(\w\W*){3}/gm

它将匹配任何包含 3 个单词字符的字符串,无论它们里面是什么。它与您的略有不同,因为您的第一个单词字符之前只需要空格。我不确定这是否是您的意图,但如果是,请告诉我,我会修改它...

编辑其实I found this question是相关的:

因此,考虑到这一点,您可以执行以下操作:

var desExp = /^\s*([\w\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][^\w\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*){3}.*$/gm;

[\w\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF] 块将匹配任何单词字符(UTF8 或 Latin-1)。

【讨论】:

    【解决方案2】:

    我想使用更广泛的类别会起作用,例如:

    /^\s*([\wåäö][^\w]*){3}.*$/gm;
    

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2018-11-29
      • 2014-04-21
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多