簡體   English   中英

如何判斷表格輸入值是否為數字?

[英]How can I judge whether if form input value is number or not?

params[:points]不是數字時,我想進行transaction 我這樣編碼。

if params[:points] !=~ /^[+-]?\d+$/
  transaction
end

但是,即使我將abcdefh輸入到params[:points] ,它也會繼續進行transaction 我該如何解決?

從表單接收的所有值都是字符串。 有些可能看起來像數字值,但它們將保留為字符串,直到您將其顯式轉換為整數為止,您可以使用String的to_i方法進行此操作。

您可以使用以下方法檢查整個值是否包含數字,這可以很好地表明它確實是數字:

!!params[:points][/^[+-]?\d+$/]

如果它是數字的字符串版本,則返回true / false。

'012345'[/^[+-]?\d+$/]
=> "012345"

!!'012345'[/^[+-]?\d+$/]
=> true

'+012345'[/^[+-]?\d+$/]
=> "+012345"

!!'+012345'[/^[+-]?\d+$/]
=> true

'-+012345'[/^[+-]?\d+$/]
=> nil

!!'-012345'[/^[+-]?\d+$/]
=> true

'0 foo'[/^[+-]?\d+$/]
=> nil

!!'0 foo'[/^[+-]?\d+$/]
=> false

我認為您想要.match ,而不是!=~

unless params[:points].match(/^[+-]?\d+$/)
  #stuff
end

或者,我最終發現存在“不匹配”運算符,只是!~而不是!=~ 是的,去掉等號也可以解決您的問題。

也許您對自己的邏輯感到困惑。

  • params[:points]"abcdefh"
  • params[:points] !=~ /^[+-]?\\d+$/
  • →執行transaction

另一方面,

我想在params [:points]不是數字時繼續進行交易

確實是這樣。 沒有錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM