2012-01-19 53 views
2

我有我的數據庫中的一些的正則表達式,然後在Ruby中有類似實例:如何使用Ruby的規則在JavaScript中驗證正則表達式?

rx = Regexp.new(rx_string) 

我想從正確的使用JavaScript將其提交給我的Rails服務器的表單中驗證的正則表達式,以顯示紅色邊框,以便稍後提交和使用時,不會在Ruby中引發異常。

是否有一種簡單的方法將Ruby的正則表達式引擎的定義賦予JavaScript腳本,該腳本將在Ruby中使用正則表達式是否有效時提供true或false?

回答

3

Ruby的正則表達式的語法和JavaScript的之間的差異可以在這裏找到:Differences between Ruby 1.9 and Javascript regexp

我建議採取輸入字符串,刪除所有Ruby的功能(如(?#comments...))和測試無論是在JavaScript的一個有效的正則表達式:

try { 
    RegExp(input); valid = true; 
} catch(e) { 
    valid = false; 
} 

從輸入字符串中刪除所有Ruby功能將是棘手的一點。

我想不出一個更簡單的方法,沒有一些超長的ruby-regex-validating-regexp。

+0

2個引擎之間的差異似乎足夠小,我想我只是試圖用JavaScript解析它。 – Kostas

1

沒有這是不可能的(在一個單一的正則表達式中),因爲你可以在你的模式中寫幾乎所有的東西和它的有效,你可以嵌套你喜歡的表達式。

當然可以編寫解析正則表達式的解析器,但我確信你不想這樣做。

在這裏有一個類似的問題:Regexp that matches valid regexps,其中答案來自RegexBuddy的作者。