除了'~'和','之外,包括所有键盘字符的正则表达式

16

如何编写一个正则表达式,包括所有键盘字符,但不包括“~”和“,”?


这是一个简单的正则表达式。你试过了吗? - Gusdor
6个回答

26

你试过这个吗?

[^~,]

现在要排除不在键盘上的字符,我认为你需要包括所有字符。
[a-zA-Z0-9\t\n ./<>?;:"'`!@#$%^&*()\[\]{}_+=|\\-]

这基本上就涵盖了它(即使看起来像是一种疯狂的完成任务的方式)。也许问题定义可以帮助您在第一个列表[^〜,]中添加更多要排除的内容,而不是尝试创建所有键盘字符的大型列表。


然而,这将允许一些不在键盘上的特殊字符,可能会因从某些文本中复制和粘贴而意外出现。 - Gopi Kishore

4

您没有说明使用的语言/工具,但在Java中,我会使用以下正则表达式:

"[\\p{Print}&&[^~,]]"

这是两个集合的交集:所有可打印的ASCII字符和除了波浪号和逗号以外的所有字符。


4

为了使正则表达式起作用,我必须这样做:

"[^~,][^~,]*" 

因为[^〜,]否定了,

[^〜,]*表示零或多个,(在我们的情况下无用)

通过放置[^〜,][^〜,]*,您可以否定一个或多个,


6
有一个特殊的量词表示“一个或多个”:[^~,]+ - Teejay

2

相关内容。

我浪费了很多时间搜索,所以下面是我得出的答案。


我想要所有键盘按键(包括空格和制表符)

// all keys (including space and tab)
var allKeyboardKeysRegex = /^[a-zA-Z0-9~`!@#\$%\^&\*\(\)_\-\+={\[\}\]\|\\:;"'<,>\.\?\/  ]*$/;

// example tests
var nonShiftChars = "`1234567890-=  qwertyuiop[]\asdfghjkl;'zxcvbnm,./ "
var shiftChars = "~!@#$%^&*()_+{}|:\"<>? ";
var someAlphaNumeric = "aAbB12 89yYzZ";

// test with allKeyboardKeysRegex
allKeyboardKeysRegex.test(nonShiftChars);
allKeyboardKeysRegex.test(shiftChars);
allKeyboardKeysRegex.test(someAlphaNumeric);

输出:

true
true
true

如果你想要排除一些字符,那么只需要从上面的第一行正则表达式中删除它们(allKeyboardKeysRegex)。
例如:
// removing '~' and ','
var allKeyboardKeysRegexMinusSome = /^[a-zA-Z0-9`!@#\$%\^&\*\(\)_\-\+={\[\}\]\|\\:;"'<>\.\?\/   ]*$/;

希望这能帮到某些人。
更新 所有字符列表。
"1234567890"
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/    " (last 2 are space & tab here)
"~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/ \t\r\n   " (last 2 are space & tab here, all these chars are escaped with \)

1
这对我有用:
[A-Za-z0-9-]+[ 0-9A-Za-z#$%=@!{},`~&*()'<>?.:;_|^/+\t\r\n\[\]"-]*

0

所有支持的键盘字符的正则表达式对我有效:

/^[a-zA-Z0-9.!@?#"$%&:';()*\+,\/;\-=[\\\]\^_{|}<>~` ]+$/

要排除'~'和','字符:

/^[a-zA-Z0-9.!@?#"$%&:';()*\+\/;\-=[\\\]\^_{|}<>` ]+$/

我可能错了,但是我看到那串字符中有两个;。虽然重复出现可以提高可读性。 - Donn Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接