LUA 字符串,去除非字母数字或空格

我有客户输入,可能包括字母、数字或空格。例如:

local customer_input = '我需要 2 个西红柿';

或者

local customer_input = '我需要两个西红柿';

但是,由于我应用的特性,客户端输入字符串中可能出现 #、*、@ 等字符。我想去掉除了空格之外的任何非字母数字字符。

我尝试过这些方法:

customer_input , _ = customer_input:gsub("%W%S+", "");

这个方法会删除短语中除第一个单词之外的所有内容。

或者

customer_input , _ = customer_input:gsub("%W%S", "");

这个方法实际上删除了空格和每个单词的第一个字母。

所以,我知道我做错了,但我不确定如何匹配字母数字+空格。我相信这一定很简单,但我一直没有找到正确的方法。

非常感谢您的帮助!

点赞
用户3832970
用户3832970

您可以使用

customer_input , _ = customer_input:gsub("[^%w%s]+", "");

Lua 在线演示 中查看。

模式细节

  • [^ - 负字符类的起始,匹配任何字符但不包括:

    • %w - 一个字母数字字符
    • %s - 一个空白字符
  • ]+ - 1 次或多次。

2020-06-29 22:59:12