亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

需求場景:因為業(yè)務(wù)中需要去調(diào)用第三方的接口,某些字段需要做校驗,但是接口返回的規(guī)則都是一些提示,像這樣的: '金額區(qū)間: 140≤x≤350USD'、'最低金額: x≥140.89USD'、'三邊之和: 10.0cm≤x≤20.0cm'...需要自己去里面提取規(guī)則和上下限值來判斷。

范圍總共有 16 種情況:

  1. min ≤ x ≤ max
  2. min ≤ x < max
  3. min < x ≤ max
  4. min < x < max
  5. max ≥ x ≥ min
  6. max ≥ x > min
  7. max > x ≥ min
  8. max > x > min
  9. x ≤ max
  10. x < max
  11. x ≥ min
  12. x > min
  13. min ≤ x
  14. min < x
  15. max ≥ x
  16. max > x
function isRangeIn(x, str) {
  if (!/^[+-]?(0|([1-9]d*))(.d+)?$/.test(x)) {
    console.log('當前值非數(shù)字')
    return
  }
  if (!str || (str && typeof str !== 'string')) return true // 規(guī)則字符串不存在默認通過
  const arr = str.match(/d+(.d+)?/g)
  if (!arr || !arr.length) return true // 未提取到范圍數(shù)據(jù)默認通過

  const numFirst = +arr[0]
  const numTwo = +arr[1]
  let isVali = true

  if (str.includes('≤x≤')) {
    isVali = (numFirst <= x) && (x <= numTwo)
  } else if (str.includes('≤x<')) {
    isVali = (numFirst <= x) && (x < numTwo)
  } else if (str.includes('<x≤')) {
    isVali = (numFirst < x) && (x <= numTwo)
  } else if (str.includes('<x<')) {
    isVali = (numFirst < x) && (x < numTwo)
  } else if (str.includes('≥x≥')) {
    isVali = (numFirst >= x) && (x >= numTwo)
  } else if (str.includes('≥x>')) {
    isVali = (numFirst >= x) && (x > numTwo)
  } else if (str.includes('>x≥')) {
    isVali = (numFirst > x) && (x >= numTwo)
  } else if (str.includes('>x>')) {
    isVali = (numFirst > x) && (x > numTwo)
  } else if (str.includes('x≤')) {
    isVali = x <= numFirst
  } else if (str.includes('x<')) {
    isVali = x < numFirst
  } else if (str.includes('x≥')) {
    isVali = x >= numFirst
  } else if (str.includes('x>')) {
    isVali = x > numFirst
  } else if (str.includes('≤x')) {
    isVali = numFirst <= x
  } else if (str.includes('<x')) {
    isVali = numFirst < x
  } else if (str.includes('≥x')) {
    isVali = numFirst >= x
  } else if (str.includes('>x')) {
    isVali = numFirst > x
  }

  return isVali
}

// 測試
// const a = isRangeIn(6.9999999999, '第三長邊: 4.0cm<x<7.0cm')
// const a = isRangeIn(11, 'x>10.0cm')
// const a = isRangeIn(9, '兩長邊之和: 10.0cm≤x≤20.0cm')
// const a = isRangeIn('141', '金額區(qū)間: 140≤x≤350USD')
// console.log(a)

面對這種很無奈的需求,一定要自己從邏輯上梳理清楚,不要漏掉任何一種可能的情況

TODO

規(guī)則里如果有數(shù)字,上面提取出來的 numFirst 和 numTwo 會不對,如:兩短邊之和*2:x≤120cm,方法里的數(shù)字提取需優(yōu)化

分享到:
標簽:JavaScript
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定