Регулярные выражения Ruby и JavaScript анализируются и выполняются разными движками с разными возможностями.Из-за этого регулярные выражения Ruby и JavaScript имеют небольшие, тонкие различия, которые немного несовместимы.Если вы помните, что они не переводят напрямую, вы все равно можете представлять простые регулярные выражения Ruby в JavaScript.
Вот , что делает проверка на стороне клиента :
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
Недавнее добавление инспектора маршрутов к рельсам использует аналогичный подход , возможно, даже лучше, поскольку он позволяет избежать исправлений обезьян:
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};