低于 250 美元的正则表达式

问题描述

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

解决方法

使用正则表达式:

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; }