2012-05-05 32 views
1

我有这个ruby正则表达式来验证用户输入的元关键字用逗号分隔。带有限制和特殊字符的meta关键字正则表达式ruby

validates_format_of :tags, :with => /^\s*[A-Za-z0-9]+(\s*,\s*[A-Za-z0-9]+)*\s*$/u 

我想2个条件更添加到此正则表达式:

  • 限制关键字4个关键字。

  • 增加西班牙语的人物,如ñáéíóúp{L}\s\p{N}

如何添加这2个条件,这个正则表达式? 谢谢

回答

1

嘿,我认为这个正则表达式将做的伎俩。

/^(([^,]+),){0,3}([^,]+)$/ 

你可以把你的验证这样的:

validates_format_of :tags, :with => /^(([^,]+),){0,3}([^,]+)$/ 

或者与validates方法

validates :tags, format: {with: /^(([^,]+),){0,3}([^,]+)$/} 

双方将做同样的

注意:您应该检查Rubular,这是一个很棒的Ruby正则表达式在线编辑器

+0

非常感谢@rogeliog。你的正则表达式解决了第一个问题**将关键字限制为4个关键字。**但是我有另外一个问题 - 字符“ñáéíóú”。我如何添加这些字符?非常感谢您 – hyperrjas

+0

您是否希望允许所有可打印字符áéíóú*aãaä?像“昏迷”以外的所有东西一样?你可以这样做'/ ^(([^,] +),){0,3}([^,] +)$ /' – rogeliog

+0

完美!它确实工作正常:D。非常感谢你! – hyperrjas