REg Exp允许ASCII可打印字符,允许使用特殊字符,不允许使用空格

时间:2017-11-17 16:26:32

标签: regex

我正在寻找一个正则表达式,它应该接受Min 1-Max 50个字符并接受ASCII可打印字符,允许使用特殊字符,不允许使用空格。

现在我有

^[ -~][^\\s]{1,50}$

但是当我输入一个单个字符时会抛出错误。任何人都可以请看这个。感谢。

2 个答案:

答案 0 :(得分:0)

我想你可以接受这个:

^\S{1,50}$

在1到50次出现之间需要任何非空格字符。 用你的正则表达式的话来说:"在空格和"〜"之间取一个字符,然后取1到50个字符,除了任何空格。这就是为什么它不能用于单个角色,至少需要两个角色。

我经常去regex101进行参考和测试。希望这有帮助

答案 1 :(得分:0)

使用由与感叹号中的ASCII符号匹配的单个字符类组成的正则表达式(因为它紧跟在空格之后。它的十六进制代码为21)直到波形符号,添加量词并用锚点包装。

const isEmpty = xs =>
  xs.length === 0
  
const head = ( [ x , ... xs ] ) =>
  x
  
const tail = ( [ x , ... xs ] ) =>
  xs

const foldl0 = ( f , xs , acc = 0 ) =>
  isEmpty (xs)
    ? acc
    : foldl0 ( f
             , tail ( xs )
             , f ( acc , head ( xs ) )
             )
        
const myFunc = ( x , y ) =>
  `( ${x} + ${y} )`
  
console.log ( foldl0 ( myFunc , [ 1 , 2 , 3 ] ) ) 
// ( ( ( 0 + 1 ) + 2 ) + 3 )

^[!-~]{1,50}$ 正则表达式匹配字符串的开头,然后匹配任何可打印的ASCII字符,然后匹配字符串末尾的任何非空白字符,因此,如您所见,它不能匹配单个字符串字符串。

^[ -~][^\\s]{1,50}$匹配一个字符串,该字符串仅包含1到50个ASCII可打印字符,而不是空格。