仅允许正则表达式中的某些非字母字符

时间:2011-04-14 22:47:17

标签: javascript regex

我尝试在javascript中编写一个正则表达式,除了只出现以下.,!-

之外,不允许使用非字母字符

这就是我的尝试,但它似乎不起作用。

/^[ 0-9a-zA-Zs][,.!]{1,}+$/  

任何帮助都将不胜感激。

以下是一些进一步说明的例子。如果用户键入以下内容:

  • 这是一个考验! (通过)
  • 这是测试!! (失败)
  • 这是 - 测试(通过)
  • 这是一个测试。(通过)
  • 这是一个测试(通过)
  • 这是一个测试(失败)
  • 这是考试? (通过)
  • 这是一个考验? (失败)
  • $ 7,500(失败)
  • 7,500(通过)

5 个答案:

答案 0 :(得分:1)

试试这个:

/^[0-9a-zA-Z]*[,.!]?[0-9a-zA-Z]*$/

唯一的问题是它本身会匹配。你需要决定是否允许a,a和

所有这些都符合您的原始标准,但可能不是您的意思。

以下是zobgib建议的扩展的第一个和最后一个部分的相同内容。

/^([0-9a-zA-Z]+[,.!]?[0-9a-zA-Z]*)|([0-9a-zA-Z]*[,.!]?[0-9a-zA-Z]+)$/

答案 1 :(得分:1)

/^[\w ]+([.,!-?][\w ]*)?$/

http://refiddle.com/10j

的示例和测试
#+ Valid values
allow.periods
allow!bangs
allow-dashes
allow,commas
alphaonly
3numeric
This is a test!
This is a - test
This is a test.
This is a, test
This is a test?
7,500

#- Invalid values
no^
---
!
!!
two..periods
This is test!!
This is a,,test
This is a test??
$7,500

答案 2 :(得分:0)

/^[^.,!-]+[.,!-]?[^.,!-]+?$/

将任何非.,!-后跟.,!-之后的任何内容,然后可能是.,!-的任何内容

分解

/^[a-zA-Z0-9]+[.,!-]?[a-zA-Z0-9]+?$/

这将匹配任何字母字符与以下

的一次出现

答案 3 :(得分:0)

/^[0-9a-zA-Z]+[,.!]?[0-9a-zA-Z]+$/

必须在可能的非字母字符之前和之后包含一个字符。

应匹配a,a但不是a,或a ....

或者你可以改变+为*以允许0或更多次出现。

/^[0-9a-zA-Z]+[,.!]?[0-9a-zA-Z]*$/

这会匹配你好!但不是!helooo

您还可以在此处获取备忘单http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/

使用这个备忘单你甚至可以逃脱

/^[:alnum:]+[,.!]?[:alnum:]*$/ 

但这可能是针对特定语言的。

答案 4 :(得分:0)

/^([,.!-]|[0-9a-zA-Z]+[,.!-])[0-9a-zA-Z]*$/  

这将符合您的一个例外或 任意数量的alphanums后跟一个例外, 并且匹配后跟零个或多个alphanums。