我需要使用以下 3 个约束来制作QLineEdit
a QRegularExpressionValidator
:
- 不能从空白开始
^[\\S]
- 不能以 Hello 开头
^(?!Hello).+
- 不能以空白结尾
^.*[\\S]$
如何将这 3 个组合到一个正则表达式中以便我可以将其设置为QRegularExpressionValidator
?
谢谢!
注意:只要我有一个可以用正则表达式工具验证的正则表达式,我就很好。我指定Qt
只是为了提供更多上下文。
我需要使用以下 3 个约束来制作QLineEdit
a QRegularExpressionValidator
:
^[\\S]
^(?!Hello).+
^.*[\\S]$
如何将这 3 个组合到一个正则表达式中以便我可以将其设置为QRegularExpressionValidator
?
谢谢!
注意:只要我有一个可以用正则表达式工具验证的正则表达式,我就很好。我指定Qt
只是为了提供更多上下文。
你可以使用
^(?!Hello\b)\S(?:.*\S)?$
解释
^
字符串的开始(?!Hello\b)
负前瞻,断言直接在右边的不是你好\S
匹配非空白字符(?:.*\S)?
可选匹配除换行符和非空白字符外的任何字符 0+ 次$
字符串结束这应该这样做:
var strings = [
'a',
'this is ok',
' leading space',
'trailing space ',
'Hello text',
'Hello'
];
var re = /^([^\s]|(?!(Hello|\s)).*[^\s])$/;
strings.forEach((str) => {
var val = re.test(str);
console.log('"' + str + '" ==> ' + val);
});
控制台输出:
"a" ==> true
"this is ok" ==> true
" leading space" ==> false
"trailing space " ==> false
"Hello text" ==> false
"Hello" ==> false
正则表达式的解释:
^...$
-- 在开始和结束处锚定([^\s]|...)
-- 逻辑或,其中第一部分是单个非空格字符(?!(...)).+
-- 负前瞻(Hello|\s)
-- 'Hello' 或空格的 ....+[^\s]
-- 后跟任意数量的字符,末尾的空格除外