我有一个带用户名属性的用户模型,一切正常,但如何在用户名上制作正则表达式,所以它只接受字母数字和_。 提前谢谢
答案 0 :(得分:1)
您可以使用此正则表达式:
^(\w|\.)+$
与以下内容相同:
^[a-zA-Z0-9_\.]+$
在regex101.com上Here's preview of the regex in action,这里有一个细分
^
匹配字符串的开头(
只对字符进行分组,以便可以应用修饰符\w
匹配任何 a-z
, A-Z
, 0-9
, _
。使其与[a-zA-Z0-9_]
相同。|
是OR字符,因此可以找到它后面或前面的匹配。\.
字面上匹配 .
。)
结束字符组+
使前一个字符组匹配一次或多次$
匹配字符串的结尾如果您想在用户名的开头和结尾取消.
和_
,可以使用:
^[a-zA-Z0-9](\w|\.)*[a-zA-Z0-9]$
请务必使用:multiline => true
选项,以避免错误。
答案 1 :(得分:-1)
:multiline => true must be added on the username form text_field as this:
validates :username, presence: true, length: {minimum: 3, maximum: 20 },
format: { with: /\A[a-zA-Z0-9]+\z/, message: 'cannot have special characters' },
uniqueness: { case_sensitive: false }
on form: <%= f.text_field :name, class: "form-control", placeholder: " Please Enter Full Name ", autofocus: true, :multiline => true %>