自定义价格过滤器的正则表达式

     2023-04-13     193

关键词:

【中文标题】自定义价格过滤器的正则表达式【英文标题】:Regular Expression for custom price filter 【发布时间】:2021-08-16 00:12:41 【问题描述】:

我正在为特定格式的价格制定正则表达式。

有效的输入是:

自然数 小数(小数点后最多两位),0.0 和 0.00 除外 以上所有条件均不带前导零(ex-05 和 08.45 无效,但 5 和 8.45 有效)

有效测试用例示例

1
11
0.10
0.01
1.1
1.00
11.11

无效测试用例示例

0
0.
0.0
0.00
0.000
01
001
1.
1.111
1111.1111
00.1
00.11
01.11

这是我尝试过但无法正常工作的方法

/^(((?!0)\d+)(.\d1,2)?)|(0\.(([1-9]\d)|(0[1-9])))$/gm

见Demo #1。

/^[1-9]+[0-9]*(.\d1,2)?$/gm

见Demo #2。

Regular Expression for Currency 中的解决方案对我不起作用,因为它成功验证了 00.11

编辑:我猜想有点摆弄,这次我做对了。只需将 [1-9] 更改为 [0-9] 即可。

^(?![0.]*$|0+[0-9])\d+(?:\.\d1,2)?$

见Demo #3。

感谢Wiktor Stribiżew 帮助这个新手。非常感谢先生。

【问题讨论】:

^(?![0.]*$|0+[1-9])\d+(?:\.\d0,2)?$?见regex101.com/r/uFSPP5/1 它接受“1”。也如您的链接中所示先生。不过感谢您的努力。 目前还不清楚你需要接受什么,不接受什么。然后尝试^(?![0.]*$|0+[1-9])\d+(?:\.\d1,2)?$。见regex101.com/r/uFSPP5/2。另外,请检查重复的问题并根据您的发现更新您的问题(那里的解决方案是否适合您)。 很抱歉再次打扰,但它也接受仍然无效的“000000.80”、“00.80”等。如果可能,请查看regex101.com/r/uFSPP5/3 然后确保使用更具体的标题并将所有有效/无效的测试用例添加到问题中。您还必须解释为什么该副本没有帮助。 【参考方案1】:

使用

^(?!0+(?:\.0+)?$|0+\d)\d+(?:\.\d1,2)?$

见proof

解释

--------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  (?!                      look ahead to see if there is not:
--------------------------------------------------------------------------------
    0+                       '0' (1 or more times (matching the most
                             amount possible))
--------------------------------------------------------------------------------
    (?:                      group, but do not capture (optional
                             (matching the most amount possible)):
--------------------------------------------------------------------------------
      \.                       '.'
--------------------------------------------------------------------------------
      0+                       '0' (1 or more times (matching the
                               most amount possible))
--------------------------------------------------------------------------------
    )?                       end of grouping
--------------------------------------------------------------------------------
    $                        before an optional \n, and the end of
                             the string
--------------------------------------------------------------------------------
   |                        OR
--------------------------------------------------------------------------------
    0+                       '0' (1 or more times (matching the most
                             amount possible))
--------------------------------------------------------------------------------
    \d                       digits (0-9)
--------------------------------------------------------------------------------
  )                        end of look-ahead
--------------------------------------------------------------------------------
  \d+                      digits (0-9) (1 or more times (matching
                           the most amount possible))
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    \.                       '.'
--------------------------------------------------------------------------------
    \d1,2                  digits (0-9) (between 1 and 2 times
                             (matching the most amount possible))
--------------------------------------------------------------------------------
  )?                       end of grouping
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string

【讨论】:

总结javaregex正则表达式提取数字和去除数字,过滤数字,提取价格(代码片段)

 转:【总结】javaregex正则表达式提取数字和去除数字,过滤数字,提取价格@Testpublicvoidtest33()StringphoneString="哈哈,13888889999";//提取数字//1Patternpattern=Pattern.compile("[^0-9]");Matchermatcher=pattern.matcher(phoneString);St 查看详情

向自定义正则表达式添加动态错误消息

】向自定义正则表达式添加动态错误消息【英文标题】:Adddynamicerrormessagetocustomregularexpression【发布时间】:2019-12-0504:04:10【问题描述】:我已经建立了一个自定义的正则表达式类。我还有一个数据库值,它是我不希望在我的Web... 查看详情

vue自定义过滤器

...ttps://github.com/lily1010/vue_learn/tree/master/lesson05 一自定义过滤器(注册在Vue全局)注意事项:(1)全局方法Vue.filter()注册一个自定义过滤器,必须放在Vue实例化前面(2) 过滤器函数始终以表达式的值作为第一个参数。带引号的参数视... 查看详情

使用 QSqlTableModel 的正则表达式自定义 QAbstractItemDelegate

】使用QSqlTableModel的正则表达式自定义QAbstractItemDelegate【英文标题】:CustomQAbstractItemDelegatewithregexforQSqlTableModel【发布时间】:2015-03-1120:00:52【问题描述】:我正在尝试创建一个自定义委托,以便我可以使用Regex来验证正在输入到... 查看详情

干货|logstash自定义正则表达式etl实战

...ok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式。有时Logstash没有我们需要的模式。幸运的是,我们有正则表达式库:Oniguruma。Oniguruma是一个灵活的正则表达式库。它包含多种语言的不同正则表达式实现的特性。G... 查看详情

qt编写自定义控件68-ip地址输入框(代码片段)

...框设置正则表达式过滤只能输入3位数字,然后安装事件过滤器识别回车自动跳到下一个输入框。关于如何设置正则表达式过滤,这个可以搜索查到,本人也不大懂这个规则,貌似还有专门的书籍专门介绍正则表达式,可能这块... 查看详情

自定义标签中的正则表达式替换

】自定义标签中的正则表达式替换【英文标题】:Regexreplacementinacustomtag【发布时间】:2020-03-2112:19:08【问题描述】:我有一个可能包含以下一个或多个标签的字符串:<CHOICE[somewords][otherwords]>我需要替换(C#)所有出现的这... 查看详情

Laravel 中正则表达式规则的自定义验证消息?

】Laravel中正则表达式规则的自定义验证消息?【英文标题】:CustomvalidationmessageforregexruleinLaravel?【发布时间】:2013-12-1716:19:23【问题描述】:非常基本的问题,我正在尝试为Laravel中的正则表达式验证规则自定义错误消息。特定... 查看详情

js自定义日期格式的正则表达式验证

...ormat=currentFormat//优先替换特殊字符,因为后面替换的正则表达式中包含特殊字符.replace(/s/ig,"\s").replace(/ 查看详情

用于忽略自定义转义字符的正则表达式模式

】用于忽略自定义转义字符的正则表达式模式【英文标题】:RegexPatternforignoringacustomescapecharacter【发布时间】:2012-09-0919:38:36【问题描述】:我正在尝试找到一个合适的正则表达式来匹配输入字符串中的一对自定义字符。这些自... 查看详情

日期范围的正则表达式自定义搜索查询

】日期范围的正则表达式自定义搜索查询【英文标题】:RegexCustomSearchqueryfordateranges【发布时间】:2019-06-2320:13:16【问题描述】:我有一个带有搜索页面的MVC.netWeb应用程序。我希望用户能够按给定年份搜索记录,例如1979.但是我... 查看详情

自定义正则表达式 [关闭]

】自定义正则表达式[关闭]【英文标题】:CustomRegularExpressions[closed]【发布时间】:2013-03-2419:03:58【问题描述】:如何使用正则表达式来分隔BCT34385Z0000N07518ZBCT34395Z0000N07518Z转换成BCT343格式?我正在使用这个magento将2种类型的序列... 查看详情

markdown尖叫青蛙自定义提取的正则表达式cheatsheet(代码片段)

查看详情

用于匹配单词的 javascript 正则表达式模式,具有自定义单词边界

】用于匹配单词的javascript正则表达式模式,具有自定义单词边界【英文标题】:javascriptregexpatterntomatchwords,withcustomwordboundary【发布时间】:2014-09-2909:04:53【问题描述】:我正在尝试使用javascript中的正则表达式匹配字符串中的单... 查看详情

elasticsearch-logstash-kibana(三)配置优化

...a的搜索和统计,因此需要对message进行解析。本文采用grok过滤器,使用match正则表达式解析,根据自己的log_format定制。nginx日志格式如下:对应日志如下:logstash中默认存在一部分正则让我们来使用,可以访问GrokDebugger来查看。... 查看详情

欧芹验证中带有自定义域的电子邮件的正则表达式是啥

】欧芹验证中带有自定义域的电子邮件的正则表达式是啥【英文标题】:whatwillberegularexpressionforemailwithcustomdomaininparsleyvalidation欧芹验证中带有自定义域的电子邮件的正则表达式是什么【发布时间】:2021-03-1801:38:50【问题描述】... 查看详情

用于自定义电子邮件和域的 C# 正则表达式

】用于自定义电子邮件和域的C#正则表达式【英文标题】:C#Regexforcustomemailanddomain【发布时间】:2021-11-0920:35:14【问题描述】:我有一个带有使用此模式的输入的剃刀视图:pattern="^[a-zA-Z0-9._+-]+&#64mydomain.com"它用作前端验证非... 查看详情

路线要求中的自定义正则表达式

】路线要求中的自定义正则表达式【英文标题】:customregexinrouterequirements【发布时间】:2012-02-1613:36:42【问题描述】:我正在尝试使路由参数匹配一个3到15个字符长的字母数字值。代码如下所示:TestBundle_new:pattern:/message/new/namede... 查看详情