regular expression for comma-delimited pairs

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Bosconian

    regular expression for comma-delimited pairs

    I have a textarea form field for inputting (or pasting) pairs of data.

    I need a regular expression pattern to validate each line for the following

    double quote
    number
    double quote
    comma
    double quote
    alpha string
    double quote
    carriage return

    The following comes close, but doesn't check for a carriage return at the
    end of each line:

    ^"([0-9]?)+"([,]\s?\"([A-Za-z0-9]+)")*$

    For example the following would return true:

    "1","John"
    "2","Paul"
    "3","George "
    "4","Ringo"


    Any suggestions would be appreciated.


  • Curtis

    #2
    Re: regular expression for comma-delimited pairs

    Bosconian wrote:
    I have a textarea form field for inputting (or pasting) pairs of data.
    >
    I need a regular expression pattern to validate each line for the following
    >
    double quote
    number
    double quote
    comma
    double quote
    alpha string
    double quote
    carriage return
    >
    The following comes close, but doesn't check for a carriage return at the
    end of each line:
    >
    ^"([0-9]?)+"([,]\s?\"([A-Za-z0-9]+)")*$
    >
    For example the following would return true:
    >
    "1","John"
    "2","Paul"
    "3","George "
    "4","Ringo"
    >
    >
    Any suggestions would be appreciated.
    >
    >
    Try the /s modifier. Perhaps a bit "tipsy" to examine the regex in depth.

    Curtis

    Comment

    • Captain Paralytic

      #3
      Re: regular expression for comma-delimited pairs

      On 13 Feb, 04:06, "Bosconian" <nob...@nowhere .comwrote:
      I have a textarea form field for inputting (or pasting) pairs of data.
      >
      I need a regular expression pattern to validate each line for the following
      >
      double quote
      number
      double quote
      comma
      double quote
      alpha string
      double quote
      carriage return
      >
      The following comes close, but doesn't check for a carriage return at the
      end of each line:
      >
      ^"([0-9]?)+"([,]\s?\"([A-Za-z0-9]+)")*$
      >
      For example the following would return true:
      >
      "1","John"
      "2","Paul"
      "3","George "
      "4","Ringo"
      >
      Any suggestions would be appreciated.
      The ? following [0-9] means that
      "","John" will also be matched.
      Also, the * before the $ means that
      "1" will be matched
      So at the very least you want
      ^"[0-9]+"([,]\s?\"([A-Za-z0-9]+)")$
      Since a $ means "the end of the line" and since a carriage return
      signifies the end of a line, his should do. Or do you want to ensure
      that there is a carriage return at theend, even if there is only one
      line?

      Comment

      • Bosconian

        #4
        Re: regular expression for comma-delimited pairs

        "Captain Paralytic" <paul_lautman@y ahoo.comwrote in message
        news:1171364086 .554958.149070@ s48g2000cws.goo glegroups.com.. .
        On 13 Feb, 04:06, "Bosconian" <nob...@nowhere .comwrote:
        >I have a textarea form field for inputting (or pasting) pairs of data.
        >>
        >I need a regular expression pattern to validate each line for the
        >following
        >>
        >double quote
        >number
        >double quote
        >comma
        >double quote
        >alpha string
        >double quote
        >carriage return
        >>
        >The following comes close, but doesn't check for a carriage return at the
        >end of each line:
        >>
        >^"([0-9]?)+"([,]\s?\"([A-Za-z0-9]+)")*$
        >>
        >For example the following would return true:
        >>
        >"1","John"
        >"2","Paul"
        >"3","George "
        >"4","Ringo"
        >>
        >Any suggestions would be appreciated.
        >
        The ? following [0-9] means that
        "","John" will also be matched.
        Also, the * before the $ means that
        "1" will be matched
        So at the very least you want
        ^"[0-9]+"([,]\s?\"([A-Za-z0-9]+)")$
        Since a $ means "the end of the line" and since a carriage return
        signifies the end of a line, his should do. Or do you want to ensure
        that there is a carriage return at theend, even if there is only one
        line?
        >
        Thank you for your response and for the pattern corrections.

        A trailing carriage return on the last line would be unnecessary and ignored
        if present. However, any preceding pairs must have a carriage return at the
        end of each line. Where in the pattern is this mandated?

        I don't have the opportunity to use regular expressions consistency, but I
        am anxious to learn the syntax and am grateful for your instruction.


        Comment

        • Captain Paralytic

          #5
          Re: regular expression for comma-delimited pairs

          On 13 Feb, 13:36, "Bosconian" <nob...@nowhere .comwrote:
          "Captain Paralytic" <paul_laut...@y ahoo.comwrote in message
          >
          news:1171364086 .554958.149070@ s48g2000cws.goo glegroups.com.. .
          >
          >
          >
          >
          >
          On 13 Feb, 04:06, "Bosconian" <nob...@nowhere .comwrote:
          I have a textarea form field for inputting (or pasting) pairs of data.
          >
          I need a regular expression pattern to validate each line for the
          following
          >
          double quote
          number
          double quote
          comma
          double quote
          alpha string
          double quote
          carriage return
          >
          The following comes close, but doesn't check for a carriage return at the
          end of each line:
          >
          ^"([0-9]?)+"([,]\s?\"([A-Za-z0-9]+)")*$
          >
          For example the following would return true:
          >
          "1","John"
          "2","Paul"
          "3","George "
          "4","Ringo"
          >
          Any suggestions would be appreciated.
          >
          The ? following [0-9] means that
          "","John" will also be matched.
          Also, the * before the $ means that
          "1" will be matched
          So at the very least you want
          ^"[0-9]+"([,]\s?\"([A-Za-z0-9]+)")$
          Since a $ means "the end of the line" and since a carriage return
          signifies the end of a line, his should do. Or do you want to ensure
          that there is a carriage return at theend, even if there is only one
          line?
          >
          Thank you for your response and for the pattern corrections.
          >
          A trailing carriage return on the last line would be unnecessary and ignored
          if present. However, any preceding pairs must have a carriage return at the
          end of each line. Where in the pattern is this mandated?
          >
          I don't have the opportunity to use regular expressions consistency, but I
          am anxious to learn the syntax and am grateful for your instruction.- Hide quoted text -
          >
          - Show quoted text -
          If you are treating each line as a separate string, then the $ will
          indicate this. If you are treating all the lines as a single string
          then I need to ask, is it only a carriage return that you will have at
          the end of each line and all you want to check for? Sometimes lines
          can be ended by a carriage return and a new line (\r\n) \nd sometimes
          by a new line only (\n). It is unusual for a line to have only a
          carriage return on its own (\r) as, on older printers, this would lead
          to the next line overtyping the previous one.

          Comment

          • Bosconian

            #6
            Re: regular expression for comma-delimited pairs

            "Captain Paralytic" <paul_lautman@y ahoo.comwrote in message
            news:1171375105 .711530.30600@q 2g2000cwa.googl egroups.com...
            On 13 Feb, 13:36, "Bosconian" <nob...@nowhere .comwrote:
            >"Captain Paralytic" <paul_laut...@y ahoo.comwrote in message
            >>
            >news:117136408 6.554958.149070 @s48g2000cws.go oglegroups.com. ..
            >>
            >>
            >>
            >>
            >>
            On 13 Feb, 04:06, "Bosconian" <nob...@nowhere .comwrote:
            >I have a textarea form field for inputting (or pasting) pairs of data.
            >>
            >I need a regular expression pattern to validate each line for the
            >following
            >>
            >double quote
            >number
            >double quote
            >comma
            >double quote
            >alpha string
            >double quote
            >carriage return
            >>
            >The following comes close, but doesn't check for a carriage return at
            >the
            >end of each line:
            >>
            >^"([0-9]?)+"([,]\s?\"([A-Za-z0-9]+)")*$
            >>
            >For example the following would return true:
            >>
            >"1","John"
            >"2","Paul"
            >"3","George "
            >"4","Ringo"
            >>
            >Any suggestions would be appreciated.
            >>
            The ? following [0-9] means that
            "","John" will also be matched.
            Also, the * before the $ means that
            "1" will be matched
            So at the very least you want
            ^"[0-9]+"([,]\s?\"([A-Za-z0-9]+)")$
            Since a $ means "the end of the line" and since a carriage return
            signifies the end of a line, his should do. Or do you want to ensure
            that there is a carriage return at theend, even if there is only one
            line?
            >>
            >Thank you for your response and for the pattern corrections.
            >>
            >A trailing carriage return on the last line would be unnecessary and
            >ignored
            >if present. However, any preceding pairs must have a carriage return at
            >the
            >end of each line. Where in the pattern is this mandated?
            >>
            >I don't have the opportunity to use regular expressions consistency, but
            >I
            >am anxious to learn the syntax and am grateful for your instruction.-
            >Hide quoted text -
            >>
            >- Show quoted text -
            >
            If you are treating each line as a separate string, then the $ will
            indicate this. If you are treating all the lines as a single string
            then I need to ask, is it only a carriage return that you will have at
            the end of each line and all you want to check for? Sometimes lines
            can be ended by a carriage return and a new line (\r\n) \nd sometimes
            by a new line only (\n). It is unusual for a line to have only a
            carriage return on its own (\r) as, on older printers, this would lead
            to the next line overtyping the previous one.
            >
            Yes, I assume we're talking about \n or \r\n.

            Incidentally, I would like to support several methods of entry. My idea is
            to have the user select a radio button for the format. For example,
            optionally the user could input

            1,John
            2,Paul
            3,George
            4,Ringo

            1,John,2,Paul,3 ,George,4,Ringo

            I eventually want it to work the same was as phpMyAdmin's import feature.
            However, this will be used by non-tech savvy users so validation will play
            an important part.

            Again, thanks for your help.


            Comment

            Working...