问题描述
我是 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; }