首页 > 解决方案 > 如果存在特定字符,如何制作所需的部分图案

问题描述

其实我有这个模式:

([0-9]{1,3}\.)?[0-9]{1,3},*?[0-9]{0,2}$

做我需要的,允许用户输入: 1.234,56 / 1234,56 / 123,56 / 1 但问题是它允许 1.000(带点分隔符的千 - 我不需要这个),有没有办法如果至少存在一个点,是否需要逗号?

请不要使用javascript解决方案。

标签: regexvalidationpattern-matching

解决方案


如果您的正则表达式在开头锚定(例如 by ),您可以对包含 aa或不包含 a^的字符串使用正向前瞻,然后匹配您现有的模式:. ,.

(?=.*\..*,|[^.]+$)([0-9]{1,3}?\.?)??([0-9]{1,3})(,[0-9]{0,2})?$

正则表达式 101 上的演示


推荐阅读