Центральная точка вашего вопроса: вершина вашего вопроса
первые 8 символов не совпадают
Как и предполагалось, это можно сделать с помощьюшаблон Lua (похож на регулярное выражение).Если вы хотите проверить, одинаковы ли первые 8 символов, вы можете использовать
function validate1st8NotSame(value)
if value:match("^(.)%1%1%1%1%1%1%1") then
return false
end
return true
end
print(validate1st8NotSame("aaaaaaaa")) --not valid
print(validate1st8NotSame("aaaaaaab")) --valid
print(validate1st8NotSame("aaaaaaa")) --!?
Шаблон работает следующим образом:
^(.)
захватывает символ в позиции 1, %1%1%1%1%1%1%1
используйте обратную ссылку %1
, чтобы проверить повторы захвата 8 раз.
Если вы действительно хотите проверить, не содержат ли первые 8 символов первые 8 символовидентичен символ, тогда необходим более сложный шаблон:
function validate1st8NoSame(value)
if value:sub(1,8):match("(.).-%1") then
return false
end
return true
end
print(validate1st8NoSame("abcdefghe")) --valid
print(validate1st8NoSame("abcdefgae")) --invalid
Идея здесь такова:
value:sub(1,8)
получить первые 8 символов (.)
захватить один символ .-
соответствует кратчайшей возможной последовательности из 0 или более повторений любых символов; %1
обратная ссылка на захваченный символ
Следующее регулярное выражение demo , которое, как мы надеемся, применяет ту же логику, делает более осязаемым.
Пример кода