需要一个正则表达式来强制 $ 或 % 但不能同时强制两者
Need a Regex to force either $ or % but not both
目前,我在 Angular 9 应用程序内的 HTML 页面上定义了以下输入:
<input type="text" formControlName="amountToWithholdInput"
onkeyup="this.value = this.value.replace(/[^0-9.%$]/, '');">
在用户键入时,它会自动删除除数字、$、% 或小数以外的所有字符。
我该如何修改它,以便在他们已经输入 $ 时删除 %,反之亦然(如果他们已经输入 %,则删除 $)?换句话说,它需要检查并查看特定字符是否存在,然后在他们尝试输入该字符时删除“相反”字符。
还是我做错了?还有其他我没有想到的方法吗?
本质上,您是在要求您的用户插入一个带有可选小数部分和尾随 $
或 %
符号的数值,其他所有内容都应在按键输入时删除。
因此,我们可以使用匹配任何字符串的正则表达式,但将小数和单个符号保留在可选组中,然后仅用该组替换原始字符串 </code>,而其余部分在完整匹配被丢弃。试一试:</p>
<p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code><input type="text" formControlName="amountToWithholdInput"
onkeyup="this.value = this.value.replace(/^((?:[0-9]+\.?[0-9]*)[%$]?)?.*/, '')">
目前,我在 Angular 9 应用程序内的 HTML 页面上定义了以下输入:
<input type="text" formControlName="amountToWithholdInput"
onkeyup="this.value = this.value.replace(/[^0-9.%$]/, '');">
在用户键入时,它会自动删除除数字、$、% 或小数以外的所有字符。
我该如何修改它,以便在他们已经输入 $ 时删除 %,反之亦然(如果他们已经输入 %,则删除 $)?换句话说,它需要检查并查看特定字符是否存在,然后在他们尝试输入该字符时删除“相反”字符。
还是我做错了?还有其他我没有想到的方法吗?
本质上,您是在要求您的用户插入一个带有可选小数部分和尾随 $
或 %
符号的数值,其他所有内容都应在按键输入时删除。
因此,我们可以使用匹配任何字符串的正则表达式,但将小数和单个符号保留在可选组中,然后仅用该组替换原始字符串 </code>,而其余部分在完整匹配被丢弃。试一试:</p>
<p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code><input type="text" formControlName="amountToWithholdInput"
onkeyup="this.value = this.value.replace(/^((?:[0-9]+\.?[0-9]*)[%$]?)?.*/, '')">