gpt4 book ai didi

javascript - 正则表达式:使用正则表达式仅允许简单算术

转载 作者:行者123 更新时间:2023-12-03 01:30:00 24 4
gpt4 key购买 nike

因此,我有一个验证器和一个 string.replace() 来保护我的基本 textarea 输入。

我的验证器如下所示:

Validators.pattern('-?[0-9]+([-+*/]?-?[0-9])*')

本质上,我想允许所有简单的算术。

示例:

2*2-2
2*2--2
-2**2--2

我不想允许除 * 或 + 之外的多个符号,如 *** 或+++

验证器应允许的示例:

+
+- (addition of a negative)
-
-- (evaluated as +)
/
*
**

整数(有效表达式)整数(有效表达式)整数等之外的所有内容都应替换为“”。 (只是作为验证器失败时的额外预防措施):

+++ => +
--- => -
*** => **
/// => /
+- => -
*/ => // (not sure what to do with this)

我有类似的东西,但需要调整为白名单:

unsafeCalculation.replace(/-?[0-9]+([-+*/]{1,2}?-?[0-9])*/, '');

示例:

2**2--2---2+++2///2 => 2**2+2-2+2/2 

让我知道您认为最好的替换正则表达式。

最佳答案

正如评论中提到的,您所描述的内容非常接近(如果不完全准确)解析。正则表达式对于解析来说很糟糕。对于一个好的解析教程,请看这里:http://lisperator.net/pltut/parser/

也就是说,这很简单,您可以使用 RegEx 来摆脱困境。您可以在同一字符串上多次替换,而不是尝试创建一个万能的正则表达式。这使得阅读和书写更加清晰。

例如

unsafeCalculation
.replace(/[+]{2,}/g, '+')
.replace(/[-]{2,}/g, '-')
// etc,.

关于javascript - 正则表达式:使用正则表达式仅允许简单算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51344700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com