我正在实施“银行”软件,创建新用户时必须输入可接受的用户名,密码和余额。
$temp = "room0%";
$db = $this->Apple->getDataSource();
$some = $db->fetchAll(
"SELECT *
FROM apple
JOIN box on apple.box_id = box.id
JOIN room on box.room_id = room.id
WHERE room.name LIKE '$temp'"
);
将是正确输入的示例
BANK: create-user bob 1234 11111
是不正确的,基本上是一个单词的用户名,一个4位数字的密码和一些整数。
regexec对于两个用户名输入都返回0,即使绝对不应该。
代码当前为
BANK: create-user bob0101 1234 11111
其中cmd [1]是用户名
我在C正则表达式方面没有很多经验,但是我知道这不应该使用数字,任何帮助将非常感谢!
答案 0 :(得分:0)
如果要匹配仅包含字母的字符,则必须使用以下内容:
int reti_s = regcomp(&regex_s,“ [a-z] +”,REG_EXTENDED | REG_ICASE);
我根据https://linux.die.net/man/3/regcomp添加了REG_ICASE标志。
答案 1 :(得分:0)
regexec
仅返回0
。如果要提取信息,则需要使用regmatch_t
数组来存储子表达式的匹配项。或者,如果您只对全局匹配感兴趣,则可以使用仅包含一个regmatch_t
元素的数组(以获取有关匹配的信息)。
如手册页所述:
pmatch数组的第0个成员被填充,以指示整个RE匹配字符串的哪个子字符串。
,您必须使用rm_so
的{{1}}和rm_eo
字段来获取字符串匹配部分的初始位置和结束位置。