Ruby on rails Ruby正则表达式,用于与Elsif进行1或2位数匹配

Ruby on rails Ruby正则表达式,用于与Elsif进行1或2位数匹配,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我试图在ruby中使用以下regexp <% elsif entry.name=~(/^[0-9][0-9]/) %> 检查entry.name字符串中是否有一个或多个数字。 我似乎不能理解正确的语法 例如,我希望语句在字符串上返回true,例如 “要不惜一切代价避免10个内容创建错误”您所匹配的^[0-9][0-9]是一个字符串,在每行(^)的开头正好有两个从0到9的数字([0-9][0-9]) 这将匹配字符串作为 "10 mistakes to avoid at all c

我试图在ruby中使用以下regexp

<% elsif entry.name=~(/^[0-9][0-9]/) %>

检查entry.name字符串中是否有一个或多个数字。 我似乎不能理解正确的语法

例如,我希望语句在字符串上返回true,例如
“要不惜一切代价避免10个内容创建错误”

您所匹配的
^[0-9][0-9]
是一个字符串,在每行(
^
)的开头正好有两个从0到9的数字(
[0-9][0-9]

这将匹配字符串作为

"10 mistakes to avoid at all cost"
而且:

"Jenny was certain she had\n10 lipsticks"
因为它搜索每行开头的数字。这不相配

"5 mistakes to avoid at all cost"
因为它与数字完全匹配

我想你想要的是符合
\A\d+
的思路
\A
只在字符串的开头搜索,而不是在每一行,
\d+
搜索一个或多个数字。这将符合以下条件:

"3 questions you should be able to answer when doing a job interview"
"345 lines of unreadable code"
"35 kittens"
等等。因此,您的代码应该为,减去多余的括号,再加上一些空格:

<% elsif entry.name =~ /\A\d+/ %>


下次可能会派上用场。

您所匹配的
^[0-9][0-9]
是一个字符串,它在每行(
^
)的开头正好有两个从0到9的数字(
[0-9][0-9]

这将匹配字符串作为

"10 mistakes to avoid at all cost"
而且:

"Jenny was certain she had\n10 lipsticks"
因为它搜索每行开头的数字。这不相配

"5 mistakes to avoid at all cost"
因为它与数字完全匹配

我想你想要的是符合
\A\d+
的思路
\A
只在字符串的开头搜索,而不是在每一行,
\d+
搜索一个或多个数字。这将符合以下条件:

"3 questions you should be able to answer when doing a job interview"
"345 lines of unreadable code"
"35 kittens"
等等。因此,您的代码应该为,减去多余的括号,再加上一些空格:

<% elsif entry.name =~ /\A\d+/ %>


下次可能会派上用场

1或2位数的匹配将是:

/^\d{1,2}/
为确保没有第三位数字,您可以使用前瞻:

/^\d{1,2}(?!\d)/
有人提到:

/^\d+/

但实际上,这将匹配3位数字(例如)。

1位或2位数字匹配将是:

/^\d{1,2}/
为确保没有第三位数字,您可以使用前瞻:

/^\d{1,2}(?!\d)/
有人提到:

/^\d+/

但这实际上会匹配3位数字(例如)。

使用
/^\d+/
而不是
/^[0-9][0-9]/
使用
/^\d+/
而不是
/^[0-9][0-9]/