我在表单中有一个“description textarea”,用户可以在其中输入项目的描述。
在表单提交之前使用javascript验证。
其中一个验证步骤是:
else if (!fld.value.match(desExp)){
和desExp:
var desExp = /^\s*(\w[^\w]*){3}.*$/gm;
现在我的问题,这在所有情况下都可以正常工作,除了描述BEGINS具有瑞典语特殊字符(å,ä,ö)的描述。
这不起作用:
åäö hello world
但这会:
hello world åäö
任何修复?
由于
答案 0 :(得分:1)
我认为使用更广泛的类别会起作用,例如:
/^\s*([\wåäö][^\w]*){3}.*$/gm;
答案 1 :(得分: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)。