How can I strip all non digits in a string except the first character?

后端 未结 5 1837
我在风中等你
我在风中等你 2021-01-19 14:34

I have a string that I want to make sure that the format is always a + followed by digits.
The following would work:

String parsed = input         


        
相关标签:
5条回答
  • 2021-01-19 15:02

    You can use this expression:

    String r = s.replaceAll("((?<!^)[^0-9]|^[^0-9+])", "");
    

    The idea is to replace any non-digit when it is not the initial character of the string (that's the (?<!^)[^0-9] part with a lookbehind) or any character that is not a digit or plus that is the initial character of the string (the ^[^0-9+] part).

    Demo.

    0 讨论(0)
  • 2021-01-19 15:07

    Yes you can use this kind of replacement:

    String parsed = inputString.replaceAll("^[^0-9+]*(\\+)|[^0-9]+", "$1");
    

    if present and before the first digit in the string, the + character is captured in group 1. For example: dfd+sdfd12+sdf12 returns +1212 (the second + is removed since its position is after the first digit).

    0 讨论(0)
  • 2021-01-19 15:14

    try this

    1- This will allow negative and positive number and will match app special char except - and + at first position.

    (?!^[-+])[^0-9.]
    

    2- If you only want to allow + at first position

    (?!^[+])[^0-9.]
    
    0 讨论(0)
  • 2021-01-19 15:18

    The following statement with the given regex would do the job:

    String result = inputString.replaceAll("(^\\+)|[^0-9]", "$1");
    

    (^\\+)    find either a plus sign at the beginning of string and put it to a group ($1),
    |         or
    [^0-9]    find a character which is not a number
    $1        and replace it with nothing or the plus sign at the start of group ($1)
    
    0 讨论(0)
  • 2021-01-19 15:18

    What about just

    (?!^)\D+
    

    Java string:

    "(?!^)\\D+"
    

    Demo at regex101.com

    • \D matches a character that is not a digit [^0-9]

    • (?!^) using a negative lookahead to check, if it is not the initial character

    0 讨论(0)
提交回复
热议问题