Maison  >  Questions et réponses  >  le corps du texte

javascript - J'obtiens toujours une erreur lorsque j'écris une regex pour vérifier 12.5-20.5?

Le format de données requis est :
1
10
100
1-5
10-50
100-500
0.5
10.5
10.5-20
10.5-20.5
10-20.5

C'est-à-dire que la taille du nombre requis pour la vérification n'est pas limitée, il peut avoir ou non des nombres à virgule flottante, il peut avoir "-" ou non, et une décimale est conservée

Voici l'expression régulière que j'ai écrite :

La copie suivante est fausse :

var a=/^\d{1,}\.?\d?-?(\d{1,})?\.?\d?$/;

Corrigé à :

var a=/^\d{1,}\.?\d{1}?-?(\d{1,})?\.?\d{1}?$/;

Mais pourquoi 20,5555 est-il toujours vrai ?

typechotypecho2644 Il y a quelques jours883

répondre à tous(3)je répondrai

  • PHP中文网

    PHP中文网2017-06-26 10:59:35

    /^d{1,}.?d?-?(d{1,})?.?d?$/匹配过程如下:
    首先d{1,}匹配的是"20";
    .?匹配".";
    d?匹配"5",?匹配了1次;
    -?匹配"",因为?匹配0或者1次,在这里匹配0次;
    (d{1,})?匹配"555",此时?匹配1次;
    .?d?匹配"",此时两个?都匹配0次;
    $ Correspond à la fin de la chaîne, donc "20.5555" peut correspondre.

    Mise à jour1 : Le processus de correspondance de
    /^d{1,}.?d{1}?-?(d{1,})?.?d{1}?$/ est le suivant :

    1. d{1,}correspond à "20";

    2. .?correspond à ".";

    3. d{1}?会首先尝试匹配一个数字,此时匹配"5",?Correspondant 1 fois ;

    4. -?会匹配"",此时?Correspondant 0 fois

    5. (d{1,})?correspond à "555";

    6. .?匹配"",此时? correspond à "", à ce moment ? correspond à 0 fois ;

    7. d{1}? correspond à "", ? correspond à 0 fois ;
    8. d{1} signifie que le numéro est répété une fois, donc cette expression régulière est en fait la même chose que d, il n'y a donc aucune différence entre l'expression régulière mise à jour et l'expression régulière d'origine.

      d{1}?匹配"",?匹配0次;
      d{1}表示数字重复一次,所以该正则和d

    9. Remarque : Il y a eu un problème avec le processus de correspondance que j'ai écrit au début, mais il a été mis à jour maintenant.

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-26 10:59:35

    const regex = /^\d+(?:\.\d)?(?:-\d+(?:\.\d)?)?$/;
    
    const cases = [
        "1",
        "10",
        "100",
        "1-5",
        "10-50",
        "100-500",
        "0.5",
        "10.5",
        "10.5-20",
        "10.5-20.5",
        "10-20.5",
        "20.5555",
        "20.5-20.5555"
    ];
    
    const r = cases.map(s => regex.test(s));
    console.log(r);

    répondre
    0
  • 高洛峰

    高洛峰2017-06-26 10:59:35

    ???Pourquoi utiliser des expressions régulières

    répondre
    0
  • Annulerrépondre