4

簡単な質問には簡単な答えがあるかもしれませんが、私の現在の解決策はひどいようです。

local list = {'?', '!', '@', ... etc)
for i=1, #list do 
    if string.match(string, strf("%%%s+", list[i])) then
         -- string contains characters that are not alphanumeric.
    end
 end

これを行うためのより良い方法はありますか..多分string.gsubで?

前もって感謝します。

4

3 に答える 3

10

文字列に英数字のみが含まれているかどうかを確認する場合は、文字列を英数字以外のすべての文字と照合します。

if(str:match("%W")) then
  --Improper characters detected.
end

パターン%wは英数字と一致します。慣例により、小文字ではなく大文字のパターンは、文字の逆のセットに一致します。したがって%W、英数字以外のすべての文字に一致します。

于 2012-08-24T23:50:35.330 に答える
4

でセットマッチを作成できます[]

local patt = "[?!@]"

if string.match ( mystr , patt ) then
    ....
end

luaの文字クラスは、(単語ではなく)単一の文字に対してのみ機能することに注意してください。組み込みのクラスがあり、%W英数字以外の文字と一致するため、ショートカットとして使用してください。

組み込みのクラスをセットに追加することもできます。

local patt = "[%Wxyz]"

英数字以外のすべての文字と一致するxyまたはz

于 2012-08-28T02:03:32.807 に答える
0

私はこのLuaツーライナーを使用しています:

  local function envIsAlphaNum(sIn)
    return (string.match(sIn,"[^%w]") == nil) end

英数字以外を検出すると、falseを返します

于 2016-11-23T12:23:02.993 に答える