Tôi muốn có thể xác thực regex được nhập của người dùng, để kiểm tra xem nó có hợp lệ hay không. Điều đầu tiên tôi tìm thấy với filter_var
của PHP với hằng số FILTER_VALIDATE_REGEXP
nhưng điều đó không làm những gì tôi muốn vì nó phải vượt qua một regex để các tùy chọn nhưng tôi không regex'ing chống lại bất cứ điều gì về cơ bản nó chỉ kiểm tra hiệu lực regex.Cách xác thực regex bằng PHP
Nhưng bạn có ý tưởng, làm cách nào để xác thực regex đầu vào của người dùng (không khớp với nội dung nào).
Ví dụ chứng thực, nói cách đơn giản:
$user_inputted_regex = $_POST['regex']; // e.g. /([a-z]+)\..*([0-9]{2})/i
if(is_valid_regex($user_inputted_regex))
{
// The regex was valid
}
else
{
// The regex was invalid
}
Ví dụ về xác nhận:
/[[0-9]/i // invalid
//(.*)/ // invalid
/(.*)-(.*)-(.*)/ // valid
/([a-z]+)-([0-9_]+)/i // valid
Bạn có thể giải thích thêm về ý nghĩa của từ 'phù hợp với nội dung không'? Nó là một chuỗi rỗng? –
Tôi có nghĩa là không có gì là không có biến, tôi không đi qua bất cứ điều gì để xác nhận đối với regex của người dùng. – MacMac
Xin lỗi để đến với vấn đề này một lần nữa, nhưng nếu bạn 'không đi qua bất cứ điều gì để xác nhận đối với regex' của người dùng, làm thế nào bạn có thể xác nhận regexp? Bạn nói trong câu hỏi rằng bạn không muốn kiểm tra tính hợp lệ, vì vậy bạn muốn kiểm tra regexp bằng cái quái gì? –