我有,檢測當一個字符串不是給定的模式正則表達式:正則表達式的紅寶石和運營商
/\A((?!.*(www|http|@|\.com\b|\.net\b|\.de\b|\.info\b)).*)$/m
這意味着,像「嗨,你在www.test.com」字符串爲FALSE 但現在我想讓一個URL:www.example.com。
這意味着:
「這是一個測試」> TRUE
「這是一個測試www.example.com」> TRUE
「這是一個測試例子。 COM這個」> TRUE
「這是一個測試www.test.com這個」> FALSE
「這是一個測試test.com這個」> FALSE
「這是一個測試test.com此www.example.com」> FALSE(假的,因爲一個禁伐URL存在)
看來我需要包括一個與運營商,我認爲是:
(?=.*PATTERN)
但不幸的是我不能使它工作。
ps:我知道這個檢測URL的正則表達式並不完美,但是因爲我的要求,它比沒有任何東西好。
謝謝!
編輯: 我的正則表達式是位於驗證:
def self.validates_is_url_and_email_free(*attr_name)
validates_format_of attr_name, {:with => /\A((?!.*(www|http|@|\.com\b|\.net\b|\.de\b|\.info\b)).*)$/m, :message => I18n.t(:not_url_email)}
end
你在做什麼這場比賽?爲什麼不提取URI,然後對其進行二級操作? 'gsub'和'scan'可能會有所幫助。當你想要一個肯定的答案時,你使用否定斷言「?!」似乎很奇怪。 – tadman
可能的重複[在rails 3中驗證鏈接(url)的好方法是什麼?](http://stackoverflow.com/questions/7167895/whats-a-good-way-to-validate-links-urls-in -rails-3) - 那裏有一些好的想法,也不涉及軌道。 –