ColdFusion 8 中西班牙语字母的正则表达式
我知道我可以使用 [az] 来检查 CF 8 中从 a 到 z 的任何字母。但是,是否有任何正则表达式可以检测西班牙语字母,如 á、í、ó、é、ñ 等?
提前致谢, 蒙特
I know that I can use [a-z] to check for any alphabets from a to z in CF 8. However, are there any regex to detect spanish alphabets like á, í, ó, é, ñ, etc.?
Thanks in advance,
Monte
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
ColdFusion 不能很好地处理 Unicode 正则表达式。
您可以使用诸如
#Chr(375)#
之类的方法将字符放入正则表达式字符串中,但这样做有点混乱。然而,Java 确实可以使用 Unicode,并且由于 CF 可以轻松地利用 Java,因此您可以使用 Java 正则表达式来进行 unicode 匹配。
这将匹配 Java 正则表达式中的单个 Unicode 字母:
有关正则表达式 Unicode 的更多详细信息,请参见:http:// /www.regular-expressions.info/unicode.html
至于在 CF 中使用 Java 正则表达式,简单的替换就是这样:
所以如果您需要的只是替换字符串,您可以这样做。
但是,如果您想要匹配(相当于重新匹配)或更复杂的功能,那么最简单的解决方案是使用一个组件,将 Java 正则表达式功能包装到易于使用的 CFC 中,并带有您可以调用的常规 CFML 函数。 就像 jre-utils.cfc
这允许您执行
以下操作:这将返回字符串中 (Unicode) 单词的数组。
ColdFusion doesn't nicely deal with Unicode regex.
You can use things like
#Chr(375)#
to get the characters into a regex string, but it's a bit messy having to do that.However, Java does work with Unicode, and since CF can utilise Java easily, you can use Java regexes to do unicode matching.
This will match a single Unicode letter in Java regex:
With more details on regex Unicode here: http://www.regular-expressions.info/unicode.html
And as for using Java regex in CF, well simple replacing is just this:
So if all you need is to replace strings, you can do that.
However, if you want matching (equivalent to rematch), or more complex functionality, then simplest solution is to use a component that wraps the Java regex functionality into a easy to use CFC with regular CFML functions you can call. Like jre-utils.cfc
This allows you to do:
Which will return an array of the (Unicode) words in the string.
最近这里有一个关于国际正则表达式的讨论,但我现在找不到。 我相信目前的情况是,正则表达式通常只能使用默认的拉丁字母。
There was recently a discussion here about international RegExes which I cannot find right now. I believe the current situation is that regular expressions are commonly possible with only default latin alphabet.
尝试一下特殊的“单词字符类”
\w
是否适合您。 注意:这也会匹配数字。 也许你可以用一个例子来澄清你到底想要完成什么?\w
应匹配a
、ä
或á
(也可匹配0
)。\w(? 将匹配
)。a
、ä
或á
(但不匹配a
、ä
或á
) >0\w+
将匹配börk
,但也匹配l33t
。\b(?:\w(? 将匹配
börk
,但不匹配l33t
。Try if the special "word character class"
\w
works for you. Caution: This will also match numbers. Perhaps you could clarify with an example what you want to accomplish exactly?\w
should matcha
,ä
orá
(but also0
).\w(?<!\d)
will matcha
,ä
orá
(but not0
).\w+
will matchbörk
but alsol33t
.\b(?:\w(?<!\d))+\b
will matchbörk
but notl33t
.