我想用以下信息生成两种模式,
1)以下特殊字符无法输入帐户表格中的名字,姓氏,电子邮件,电话号码字段:
模式“[] :; | = + *?<> / \, 名称不能以句点开头
2)无法在公司地址栏中输入以下特殊字符:
模式< > / \ |
请给我一个主意。
提前致谢
答案 0 :(得分:4)
尝试这些模式
第一点
(?i)^([a-z][^"\[:\]\|=\+\*\?<>\\\/\r\n]+)$
第2点
(?i)^([a-z][^<>\\\/\|\r\n]+)$
<强>说明强>
1st Pattern
"(?i)" + -- Match the remainder of the regex with the options: case insensitive (i)
"^" + -- Assert position at the beginning of a line (at beginning of the string or after a line break character)
"(" + -- Match the regular expression below and capture its match into backreference number 1
"[a-z]" + -- Match a single character in the range between “a” and “z”
"[^\"\\[:\\]\\|=\\+\\*\\?<>\\\\\\/\r\n]" + -- Match a single character NOT present in the list below
-- The character “"”
-- A [ character
-- The character “:”
-- A ] character
-- A | character
-- The character “=”
-- A + character
-- A * character
-- A ? character
-- One of the characters “<>”
-- A \ character
-- A / character
-- A carriage return character
-- A line feed character
"+" + -- Between one and unlimited times, as many times as possible, giving back as needed (greedy)
")" +
"$" -- Assert position at the end of a line (at the end of the string or before a line break character)
2nd Pattern
"(?i)" + -- Match the remainder of the regex with the options: case insensitive (i)
"^" + -- Assert position at the beginning of a line (at beginning of the string or after a line break character)
"(" + -- Match the regular expression below and capture its match into backreference number 1
"[a-z]" + -- Match a single character in the range between “a” and “z”
"[^<>\\\\\\/\\|\r\n]" + -- Match a single character NOT present in the list below
-- One of the characters “<>”
-- A \ character
-- A / character
-- A | character
-- A carriage return character
-- A line feed character
"+" + -- Between one and unlimited times, as many times as possible, giving back as needed (greedy)
")" +
"$" -- Assert position at the end of a line (at the end of the string or before a line break character)
<强>码强>
try {
boolean foundMatch = subjectString.matches("(?i)^([a-z][^\"\\[:\\]|=+*?<>\\\\/\\r\\n]+)$");
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
答案 1 :(得分:1)
您可以使用String.contains()
方法,而不是使用您显然不自信的正则表达式。
但是,如果你必须使用正则表达式,就像Mayur Patel所说,“[ab]
”基本上意味着a或b!你应该看看regularexpressions.info
答案 2 :(得分:1)
以下是我的问题的解决方案
1)(?i)^([a-z] [^ \“\ [:\] | = + *。?&lt;&gt; \\ / \ r \ n] +)$
2)(?i)^([a-z] [^ \“&lt;&gt; | \\ / \ r \ n] +)$
我还在1)点中添加了句点符号,用于检查不带有句点符号的名称。
非常感谢Cylian和Andy的帮助,这对我帮助很大。
再次感谢:)