【发布时间】:2011-02-11 19:29:08
【问题描述】:
在我的 Rails 应用程序中,我需要验证一个字符串,该字符串在创建时不能使其第一个字符为空或由任何特殊字符组成。
例如:“file”和“%file”无效。你知道我应该使用什么正则表达式吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails regex validation
在我的 Rails 应用程序中,我需要验证一个字符串,该字符串在创建时不能使其第一个字符为空或由任何特殊字符组成。
例如:“file”和“%file”无效。你知道我应该使用什么正则表达式吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails regex validation
仅当字符串的第一个字母是字母、数字或“_”时,以下正则表达式才会匹配:
^\w
仅限字母或数字:
^[0-9a-zA-Z]
^ 在正则表达式中具有特殊含义,当它位于字符类 ([...]) 之外时,它匹配字符串的开头(实际上不匹配任何字符)。
如果你想匹配所有无效字符串,你可以在字符类中放置一个^ 来否定它,所以前面的表达式是:
^[^\w]
或
^[^0-9a-zA-Z]
【讨论】:
[^\w] 等价于 \W。
以交互方式试用 Ruby 正则表达式的好地方是Rubular。我给出的链接显示了@Dave G 给出的答案以及一些测试示例(乍一看它似乎有效)。您可以扩展示例以进一步说服自己。
【讨论】:
正则表达式
^[^[:punct:][:space:]]+
应该做你想做的事。我不能 100% 确定 Ruby 提供的正则表达式和 POSIX 类支持,因此您对此的了解可能会有所不同。
【讨论】: