3

我只想找到非字母数字字符,并且只找到没有“-”的空格...

但这不起作用:

REGEXP '^[a-zA-Z0-9/-:space:]*'

此正则表达式对这些数据有效:

 'Test Cinema'
  'AMERICANII AU TALENT - SEZONUL 5, EPISODUL 12'

我不想找到这些字符,我想找到这样的字段:

'Test Item;?!'
'LOCAL KOMBAT "FIERBE BULGARIA"'

我如何编写仅对其他字符有效的正则表达式。

4

3 回答 3

6

^ 必须在括号内才能成为否定。当放在正则表达式的开头时,^ 表示它应该在字符串的开头匹配。

试试这个来匹配所有非空、非字母数字(包括空格和-)的字符串:

^[^a-zA-Z0-9 -]+$
于 2012-08-15T15:06:31.890 回答
4
[^a-zA-Z0-9 -]*

这就是你想要的,我想。

通过将 放在-末尾[],正则表达式知道您的意思是文字-,并且您不需要使用\.

编辑:要匹配整个字符串,请使用:

^[^a-zA-Z0-9 -]*$

^$用于将正则表达式锚定到字符串的开头和结尾。

于 2012-08-15T15:05:41.103 回答
1

列出一个测试应该匹配和不应该匹配的东西的列表会很有用,因为它需要猜测

尝试

1. ^.*?[^A-Za-z0-9 -]+[A-Za-z0-9 -]*$
2. ^.*?[^A-Za-z0-9, -]+[A-Za-z0-9, -]*$

1个匹配(第一个因为逗号)

AMERICANII AU TALENT - SEZONUL 5, EPISODUL 12
Test Item;?!
LOCAL KOMBAT "FIERBE BULGARIA"

但与测试影院不匹配

2 场比赛

Test Item;?!
LOCAL KOMBAT "FIERBE BULGARIA" 

但是不匹配

Test Cinema
AMERICANII AU TALENT - SEZONUL 5, EPISODUL 12

你可以在这里玩第二个 我不得不否定换行符以使其适用于示例,但只需每行添加一个测试以查看它是否匹配

于 2012-08-15T16:04:23.703 回答