Ruby和JavaScript的正则表达式由具有不同能力的不同引擎解析和执行。正因为如此,Ruby和JavaScript正则表达式具有稍微不兼容的细微差别。如果您注意到它们没有直接翻译,那么您仍然可以在JavaScript中表示简单的Ruby正则表达式。
这里的what client side validations does:
class Regexp
def to_javascript
Regexp.new(inspect.sub('\\A','^').sub('\\Z','$').sub('\\z','$').sub(/^\//,'').sub(/\/[a-z]*$/,'').gsub(/\(\?#.+\)/, '').gsub(/\(\?-\w+:/,'('), self.options).inspect
end
end
最近addition of the routes inspector to rails需要a similar approach,甚至更好,因为它避免了猴子补丁:
def json_regexp(regexp)
str = regexp.inspect.
sub('\\A' , '^').
sub('\\Z' , '$').
sub('\\z' , '$').
sub(/^\// , '').
sub(/\/[a-z]*$/ , '').
gsub(/\(\?#.+\)/ , '').
gsub(/\(\?-\w+:/ , '(').
gsub(/\s/ , '')
Regexp.new(str).source
end
然后将这些媒体插入JavaScript代码,使用这样的:
var regexp = #{/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i.to_javascript};
此问题的相关搜索结果[可在此处找到](https://www.google.com/#hl=zh-CN&safe=active&sclient=psy-ab&q=(convert%7Ctranslate)+ ruby + regex + to + javascript&oq =(转化%7Ctranslate)+红宝石+ +正则表达式到+的javascript&gs_l = serp.3 ... 6611.13840.0.14133.12.12.0.0.0.0.123.1024.9j3.12.0.les%3B..0.0 ... 1c.1.4。 PSY-ab.OIu4b055si4&PBX = 1&BAV = on.2,or.r_gc.r_pw.r_cp.r_qf。&FP = 50b26647ad5972f8&BIW = 1366&波黑= 639)。 – 2013-02-20 15:38:37