高分!!求js代码。可以验证一串字符串中里面的引号,括号。尖括号左右匹配的?

JavaScript018

高分!!求js代码。可以验证一串字符串中里面的引号,括号。尖括号左右匹配的?,第1张

用正则表达式比较简单、

还可以用String类的方法判断、

如:

String str ="<>!@~#$%^&*()_+"//将特殊字符保存到str里面

String strchar = str.substring(int temp1,int temp2)//用这方法取得字符

strchar.equals("*")//用这方法判断取出来的字符和你所要比较的字符

使用“栈” 这种数据结构。

栈 (Stack)是一种后进先出(last in first off,LIFO)的数据结构。

算法基本思想:依次判断表达式中的每个字符,若是左括号就入栈,如果是右括号则出栈,出栈的时候判断是否为空,如果为空,则说明不匹对,最后读到表达式末尾没有字符了,再判断一下栈是否为空,如果为空,则说明匹配,不为空,说明不匹配。

参考如下代码,引用地址(http://blog.csdn.net/kkkkkxiaofei/article/details/8293980)

#include <stdio.h>

#include <malloc.h>   //malloc,realloc

#include <math.h>     //含有overflow

#include <process.h>  //exit()

#define S_SIZE 100   //栈的空间大小

#define STACKINCREAMENT 10//增加空间

struct SqStack{

int *base //栈底

int *top  //栈顶

int stacksize   //栈当前的存储空间

}

void main()

{//子函数声明

void InitStack(SqStack &S)//初始化空栈

int StackEmpty(SqStack S)//判空

void push(SqStack &S,int e)//进栈

    void pop(SqStack &S,int &e)//出栈

//主函数开始

SqStack s//初始化空栈

InitStack(s)

char ch[100],*pint e

p=ch

printf("输一个含义有()[]{}的括号表达式:\n")

gets(ch)

    while(*p)

switch (*p)

{

case '{':

case '[':

case '(': push(s,*p++)break//只要是左括号就入栈

case '}':

case ']':

case ')':pop(s,e)

     if ((e=='{' && *p=='}') ||(e=='[' && *p==']') || (e=='(' && *p==')'))

 p++

 else

 {printf("括号不匹配!")exit(OVERFLOW)}

 break

default :p++//其他字符就后移

}

}

    if (StackEmpty(s))

      printf("括号匹配成功")

else

      printf("缺少右括号!")

printf("\n")

}

void InitStack(SqStack &S)

{S.base=(int *)malloc(S_SIZE*sizeof(int))

S.stacksize=S_SIZE

S.top=S.base//初始化空栈

}

int StackEmpty(SqStack S)

{

if(S.base==S.top)

return 1

else

return 0

}

void push(SqStack &S,int e)

{//进栈

if(S.top-S.base>=S.stacksize)

{S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREAMENT)*sizeof(int))

S.top=S.base+S.stacksize

S.stacksize+=STACKINCREAMENT}

*(S.top)=e

S.top++   

}

void pop(SqStack &S,int &e)

{//出栈

if(S.base!=S.top)

{S.top--

e=*S.top}

}