如何制作这个正则表达式?

时间:2016-02-04 14:06:04

标签: javascript regex

如何为这个字符串制作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})$,但它不起作用

2 个答案:

答案 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 +在数字之间添加,好像括号和数字之间有更多空格,它仍然匹配。