【问题标题】:Regex for less than $250 [closed]低于 250 美元的正则表达式 [关闭]
【发布时间】:2021-08-14 03:44:06
【问题描述】:

我是 regex 的新手,我正在寻找一种方法来匹配任何低于 250 美元的金额。如何实现?我将要查看的数字中有一个美元符号。谢谢!

【问题讨论】:

  • 正则表达式可能不是“评估数字”的最佳方式。虽然它可能是处理输入中的“$”字符的好方法。问:这是您正在编写的某个应用程序的一部分吗?您使用什么语言?隐含的问题:您不能将输入转换为数字吗?
  • 您是否有理由专门询问正则表达式,您能否为用例提供更多上下文?
  • 我使用的软件只使用了正则表达式。我需要根据他们个人资料上的字段来识别某些客户,以便向他们发送消息。

标签: regex numbers dollar-sign


【解决方案1】:

使用正则表达式:

const pattern = /^\$(1?\d{1,2}|2[0-4]\d)$/

console.log('--- edge cases ---')
console.log("$250", pattern.test("$250"))
console.log("$255", pattern.test("$255"))
console.log("$269", pattern.test("$269"))
console.log("$420", pattern.test("$420"))
console.log("$249", pattern.test("$249"))
console.log("$199", pattern.test("$199"))
console.log(" $55", pattern.test("$55"))
console.log("  $0", pattern.test("$0"))
console.log("  $8", pattern.test("$8"))
console.log("  e", pattern.test("e"))
console.log(" 50", pattern.test("50"))
console.log("space", pattern.test(""))

console.log('--- random tests ---')
Array.from({length: 20}, _ => `$${Math.floor(Math.random() * 500)}`)
     .forEach(e => console.log(e.padStart(4), pattern.test(e)))
.as-console-wrapper { max-height: 100% !important; top: 0; }

使用非正则表达式方法(我认为更好),javascript中的伪代码:

const test = str => str?.split('$')?.[1] < 250

console.log('$350', test('$350'))
console.log('$250', test('$250'))
console.log('$50', test('$50'))
console.log('$249', test('$249'))
console.log('$199', test('$199'))
console.log('420', test('420'))
console.log('space', test(' '))
console.log('empty', test(''))
console.log('undefined', test())
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2013-07-25
    相关资源
    最近更新 更多