防止第一个字符为空格的字符串模式
String pattern that prevents the first character being a whitespace
我在想出一个允许输入任何内容的模式时遇到了一些困难,只要第一个字符不是空格即可。
我试过了
String pattern = "[^\s][a-zA-Z0-9\W ]+";"
和 "([a-zA-Z0-9\W]+)|(([a-zA-Z0-9\W]+\s[a-zA-Z0-9\W]+)+)"
以及其他几个变体,但都没有成功。任何帮助将不胜感激。
我正在使用 Java 顺便说一句
大多数正则表达式匹配默认在字符串中的任意位置搜索模式。由于您特别关注字符串的开头,因此您应该在整个正则表达式前加上 '^' 以将匹配锚定到输入的开头。
String pattern = "^[^\s][a-zA-Z0-9\W ]+";
它可能有点令人困惑,因为 ^
出现在方括号内时具有非常不同的含义。如您所知,在括号内,它表示匹配括号中列出的字符集的补码(即除所有字符外的所有字符)。在外面,它只是字符串开头的锚点。
在这种非括号用法中,它与 $
相反,它将匹配锚定在字符串的 end 处,例如 /end$/
将匹配 "friend" 但不匹配 "ending" - 您可以在 URL 阅读更多关于锚点的信息:http://www.regular-expressions.info/anchors.html
这个有用吗
^[^\s].*
第一个插入符号表示行首,第二个插入符号表示否定。
既然你不关心其余的,你可以直接使用String.charAt(int)
with Character.isSpaceChar(char)
, or String.codePointAt(int)
with Character.isSpaceChar(int)
。
第二种方法是在星界中处理Unicode字符串和代码点的正确方法,而第一种方法是错误的,但是当你的输入只有来自基本多语言位面(BMP)的字符时可用。
第二种方法的代码:
boolean startWithSpace = Character.isSpaceChar(input.codePointAt(0));
Character.isSpaceChar
根据 Unicode 检查任何空白字符 。不要与 Character.isWhitespace
混淆,它根据 Java.
检查空白字符
我在想出一个允许输入任何内容的模式时遇到了一些困难,只要第一个字符不是空格即可。 我试过了
String pattern = "[^\s][a-zA-Z0-9\W ]+";"
和 "([a-zA-Z0-9\W]+)|(([a-zA-Z0-9\W]+\s[a-zA-Z0-9\W]+)+)"
以及其他几个变体,但都没有成功。任何帮助将不胜感激。
我正在使用 Java 顺便说一句
大多数正则表达式匹配默认在字符串中的任意位置搜索模式。由于您特别关注字符串的开头,因此您应该在整个正则表达式前加上 '^' 以将匹配锚定到输入的开头。
String pattern = "^[^\s][a-zA-Z0-9\W ]+";
它可能有点令人困惑,因为 ^
出现在方括号内时具有非常不同的含义。如您所知,在括号内,它表示匹配括号中列出的字符集的补码(即除所有字符外的所有字符)。在外面,它只是字符串开头的锚点。
在这种非括号用法中,它与 $
相反,它将匹配锚定在字符串的 end 处,例如 /end$/
将匹配 "friend" 但不匹配 "ending" - 您可以在 URL 阅读更多关于锚点的信息:http://www.regular-expressions.info/anchors.html
这个有用吗
^[^\s].*
第一个插入符号表示行首,第二个插入符号表示否定。
既然你不关心其余的,你可以直接使用String.charAt(int)
with Character.isSpaceChar(char)
, or String.codePointAt(int)
with Character.isSpaceChar(int)
。
第二种方法是在星界中处理Unicode字符串和代码点的正确方法,而第一种方法是错误的,但是当你的输入只有来自基本多语言位面(BMP)的字符时可用。
第二种方法的代码:
boolean startWithSpace = Character.isSpaceChar(input.codePointAt(0));
Character.isSpaceChar
根据 Unicode 检查任何空白字符 。不要与 Character.isWhitespace
混淆,它根据 Java.