如何为这个字符串制作regexp(js)?
(从1到6位)3位3位数
(从1到6位)从1到4位数
示例
(1) 234 567
(12) 345 678
(123) 456 789
(1234) 567 890
(12345) 678 901
(123456) 789 012
(1) 23
(1) 234
(1) 2345
我尝试使用此正则表达式^(?([1-9]{1,6}))?[ ]?([1-9]{1,3})[ ]?([1-9]{1,3})$
,但它不起作用
答案 0 :(得分:1)
这适合你想要的东西:
package main
import "crypto/rand"
import "fmt"
import "encoding/binary"
func randomInt(max int) int {
var n uint16
binary.Read(rand.Reader, binary.LittleEndian, &n)
return int(n) % max
}
func shuffle(s *[]string) {
slice := *s
for i := range slice {
j := randomInt(i + 1)
slice[i], slice[j] = slice[j], slice[i]
}
*s = slice
}
func main() {
slice := []string{"a", "b", "c", "d", "e", "f", "h", "i", "j", "k"}
shuffle(&slice)
fmt.Println(slice)
}
它匹配/^\(\d{1,6}\) (\d{3} \d{3}|\d{1,4})$/gm
,然后是一到六位数字,然后是(
,然后是'3位数,一个)
,然后是三位数或一到四位'
使用的模式为(全局搜索)和
g
(多行搜索)。
<强> Regex101 Demo 强>
答案 1 :(得分:0)
以下正则表达式将匹配您的所有示例。
^\(\d{1,6}\)\s+(\d{3}\s+\d{3}|\d{1,4})$
在这个正则表达式中,“(”由反斜杠转义,\ s +在数字之间添加,好像括号和数字之间有更多空格,它仍然匹配。