【问题标题】:How can I find one instance of a character using REGEX?如何使用 REGEX 找到一个字符的实例?
【发布时间】:2016-11-17 11:51:59
【问题描述】:

我有一个输入字段,它应该只接受货币语法中使用的字符(美元符号、数字、逗号和小数)。如何编写我的正则表达式来检查一个字符串是否包含至少一个不是上述字符的字符?

我尝试了以下方法,但这个表达式的问题是,如果字符串中存在一个有效字符,它会抛出“else”语句。 (unitPriceVal 是用户输入的字符串)

我想编写一个正则表达式来检查整个字符串是否包含有效的货币,如果为真则运行 else 语句

validCurrency = /([0-9\$.,])/;

if (!unitPriceVal.match(validCurrency) || unitPriceVal == "") {
                        unitPrice.setValueState("Error");
                    } else {
                        unitPrice.setValueState("None");
                    }
                }, 

【问题讨论】:

  • 我可能会误解,但是validCurrency = /([0-9\$.,]+)/; 对你有用吗?
  • 是的,当一个字符与表达式匹配时,它会运行 else 块,我想编写一个正则表达式来检查整个表达式是否包含有效的货币

标签: javascript regex


【解决方案1】:

我想编写一个正则表达式来检查整个字符串是否包含有效的货币

要检查整个字符串,请使用^$ 将匹配锚定到输入的开头和结尾,并确保中间是允许字符的序列 (+):

/^[\d$.,]+$/;

你不需要括号。您也不需要转义字符集中的$。最后,您可以将\d 用作数字。

通常,最好使用input 元素的pattern 属性来执行此检查。在这种情况下,您不需要锚点(它们是隐含的):

<input pattern="[\d$.,]+">

【讨论】:

  • 很好的解决方案。我只希望我可以使用输入模式,不幸的是我在 SAP UI5/xml 视图中编写,控件非常有限。它(正则表达式)确实有效!
【解决方案2】:

如何编写我的正则表达式来检查一个字符串是否至少包含一个 不是上述字符的字符?

function validUnitPrice(unitPriceVal) {
  let invalidCurrency = /[^0-9\$.,]/;
  return unitPriceVal.search(invalidCurrency) == -1;
}

^ 字符作为字符集中的第一个字符 ([^...]) 否定字符集,即匹配不在集中的字符。

【讨论】:

  • 虽然否定注释是正确的,但这并不能真正解决问题。虎三郎的回答是正确的做法。
猜你喜欢
  • 1970-01-01
  • 2017-03-20
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 2021-11-08
  • 2020-02-13
  • 1970-01-01
相关资源
最近更新 更多