Я не могу придумать какого-либо особенно неприятного способа испортить ваш сервер, используя только цифры и несколько операторов, однако есть некоторые вещи, на которые нужно обратить внимание:
Учитывая, что[^...]
является классом символов, вам не нужно разделять каждое значение с помощью |
.Это, вероятно, то, что вы действительно хотите: [^^()\d*\/+-]
.Это будет соответствовать всему, что вы делаете , а не , который хотите разрешить.
Кроме того, важно помнить, что в JavaScript ^
не представляет полномочия, а скорее "исключающее или".Это означает, например, что 2 ^ 3 == 1
.Таким образом, вы, вероятно, не хотите помещать в белый список ^
: [^()\d*\/+-]
.
Вы можете столкнуться с недопустимым синтаксисом, таким как (1 * (2 + 3)
, так что вы должны следить за этимВозможно, вы можете просто использовать блок try catch и по-настоящему разобраться с такими вещами (сообщить о проблеме пользователю или что-то в этом роде).